Проверка работы сервера php

Проверка доступности сайта с помощью PHP

Аптайм сайта (от англ. uptime) — время его непрерывной работы – крайне важная характеристика доступности сайта. Для того чтобы убедиться в доступности или недоступности сайта, необходимо выполнить проверку. Проверку доступности сайта можно провести с помощью PHP скрипта, о чем мы и поговорим далее.

Самый простой инструмент для проверки сайта на доступность – это модуль PHP cURL. С помощью него мы будем выполнять проверку статуса доступности того или иного сайта.

Проверка доступности сайта

Следующий кусочек кода используется для проверки доступности домена с помощью cURL. Для большей полезности, весь код, приведенный снизу, обернут в функцию, которая называется isSiteAvailable().

Функция isSiteAvailable() выполняет cURL запрос и проверяет доступность домена, а также находится ли он онлайн. Если сайт доступен — возвращается TRUE, иначе возвращается FALSE, т.е. сайт находится офлайн.

// Проверка правильности URL
if(!filter_var($url, FILTER_VALIDATE_URL)) return false;
>

// Инициализация cURL
$curlInit = curl_init($url);

// Установка параметров запроса
curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($curlInit,CURLOPT_HEADER,true);
curl_setopt($curlInit,CURLOPT_NOBODY,true);
curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

// Получение ответа
$response = curl_exec($curlInit);

// закрываем CURL
curl_close($curlInit);

return $response ? true : false;
>

Как использовать?

Вызывайте функцию isSiteAvailable() со строковым аргументом, представляющим собой URL адрес сайта, доступность которого вы хотите проверить. И в зависимости от ответа вы можете предпринимать дальнейшие действия.

if(isSiteAvailible($URL)) echo ‘Сайт доступен.’;
>else echo ‘Сайт недоступен.’;
>

Вот так просто можно проверить, доступен ли сайт или нет с помощью PHP и cURL.

Создано 25.10.2018 10:57:17

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 1 ):

    хм, а как раз таки хттпс не доступен — хотя тотже хттп — норм.

    Для добавления комментариев надо войти в систему.
    Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Источник

    Проверка работы сервера php

    БлогNot. Проверка доступности сервера на PHP

    Проверка доступности сервера на PHP

    Проверить доступность одного Web-сервера легко с помощью стандартной функции fsockopen :

    0) $status = 'alive, responding'; fclose ($fp); > echo "$server status is $status"; ?>

    Однако для проверки состояния нескольких серверов такой подход едва ли годится — вызов функции fsockopen может длиться столько секунд, сколько указано в её последнем параметре, и только затем будет выполнена следующая команда сценария. Используя PHP 5 и потоковые сокеты задачу можно выполнить и асинхронно, правда, код станет сложнее:

     $host) < $s = @stream_socket_client ("$host:80", $errno, $errstr, $timeout, STREAM_CLIENT_ASYNC_CONNECT|STREAM_CLIENT_CONNECT); if ($s) < $sockets[$id] = $s; $status[$id] = "in progress"; >else < $status[$id] = "failed, $errno $errstr"; >> //Ждём ответов while (count($sockets)) < $read = $write = $sockets; $n = stream_select ($read, $write, $e = null, $timeout); if ($n >0) < foreach ($read as $r) < $id = array_search($r, $sockets); $data = fread($r, 8192); if (strlen($data) == 0) < if ($status[$id] == "in progress") < $status[$id] = "failed to connect"; >fclose($r); unset ($sockets[$id]); > else < $status[$id] .= $data; >> foreach ($write as $w) < $id = array_search($w, $sockets); @fwrite ($w, "HEAD / HTTP/1.0\r\nHost: " . $hosts[$id] . "\r\n\r\n"); $status[$id] = "waiting for response"; >> else < foreach ($sockets as $id =>$s) < $status[$id] = "timed out " . $status[$id]; >break; > > //Вывод результатов foreach ($hosts as $id => $host) < echo "Host: $host Status: " . $status[$id] . "
    \n"; > ?>

    На локалхосте Windows, несмотря на подавление вывода сообщений об ошибках от функции stream_select , Вы рискуете получить лишь

    Warning: Invalid CRT parameters detected in C:\Inetpub\wwwroot\socks.php on line 22

    Причина думаю, в таком же баге, на *nix-сервере пример сработал.

    11.05.2012, 16:55 [13894 просмотра]

    Источник

    Скрипт PHP: проверка доступности сайта fopen и cURL

    Скрипт, приведенный ниже, пытается прочитать страницу (картинку, css-файл и др.), по заданному url. Если ответ от сервера с содержимым не поступит в течении 10 секунд, сайт или то, что запрошено, будет считаться не доступным.

    $url = ‘http://obovsem.org.ua/’ ;
    ini_set ( ‘default_socket_timeout’ , ’10’ ) ;
    $fp = fopen ( $url , «r» ) ;
    $res = fread ( $fp , 500 ) ;
    fclose ( $fp ) ;
    if ( strlen ( $res ) > 0 )
    echo ‘Сайт ‘ . $url . ‘ доступен’ ;
    else
    echo ‘Сайт ‘ . $url . ‘ не доступен’ ;

    По умолчанию в PHP ожидание ответа посланного с помощью сокетов (fopen) длится 60 сек.

    Проверка ответа сервера при помощи cURL (Libcurl)

    cURL — подключаемая библиотека (в PHP она называется Libcurl) для работы по различным протаколам, в том числе и HTTP. С ее помощью можно узнать ответ сервера, что позволяет определить, доступен ли запрашиваемый сайт в данный момент. Эта библиотека доступна практически на всех хостинг-площадках. Документацию по функциям и возможностям библиотеки cURL в PHP можно посмотреть тут: www.php.net/manual/ru/book.curl.php , php.net/curl .

    function check_domain_availible ( $domain )
    {
    if ( ! filter_var ( $domain , FILTER_VALIDATE_URL ) )
    return false ;

    $curlInit = curl_init ( $domain ) ;
    curl_setopt ( $curlInit , CURLOPT_CONNECTTIMEOUT , 10 ) ;
    curl_setopt ( $curlInit , CURLOPT_HEADER , true ) ;
    curl_setopt ( $curlInit , CURLOPT_NOBODY , true ) ;
    curl_setopt ( $curlInit , CURLOPT_RETURNTRANSFER , true ) ;

    $response = curl_exec ( $curlInit ) ;
    curl_close ( $curlInit ) ;

    if ( $response )
    return true ;
    return false ;
    }

    $url = ‘http://obovsem.org.ua/’ ;
    if ( check_domain_availible ( $url ) )
    echo ‘Сайт ‘ . $url . ‘ доступен’ ;
    else
    echo ‘Сайт ‘ . $url . ‘ не доступен’ ;

    Функция check_domain_availible ( ) пытается получить ответ от сервера, и если он есть, сайт считается доступным. Обратите внимание, что ответ от сервера может быть с каким угодно статусом HTTP: HTTP 301 (редирект на другую страницу), HTTP 404 (страница не найдена) и т.д. Детальную инфформацию о статусах HTTP можно посмотреть тут: » Status code definitions (w3.org eng) «, » Ответы Google для Web-мастеров » и » коды статуса http (поиск в Google) «.

    Функция filter_var ( ) появилась в PHP 5 и служит заменой некоторых регулярных выражений, часто используемых в скриптах: проверка на соответствие введенных данных URL, E-mail и др. Документация по этой функции тут: описание функции filter_var() , фильтры функции filter_var() .

    Чтобы узнать только HTTP статус ответа сервера, и уже на его основании делать выводы о доступности или не доступности сайта, можно использовать скрипт, приведенный ниже:

    function check_http_status ( $url )
    {
    $user_agent = ‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)’ ;
    $ch = curl_init ( ) ;
    curl_setopt ( $ch , CURLOPT_URL , $url ) ;
    curl_setopt ( $ch , CURLOPT_USERAGENT , $user_agent ) ;
    curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 ) ;
    curl_setopt ( $ch , CURLOPT_VERBOSE , false ) ;
    curl_setopt ( $ch , CURLOPT_TIMEOUT , 10 ) ;
    curl_setopt ( $ch , CURLOPT_SSL_VERIFYPEER , false ) ;
    curl_setopt ( $ch , CURLOPT_SSLVERSION , 3 ) ;
    curl_setopt ( $ch , CURLOPT_SSL_VERIFYHOST , false ) ;
    $page = curl_exec ( $ch ) ;

    $err = curl_error ( $ch ) ;
    if ( ! empty ( $err ) )
    return $err ;

    $httpcode = curl_getinfo ( $ch , CURLINFO_HTTP_CODE ) ;
    curl_close ( $ch ) ;
    return $httpcode ;
    }

    Источник

    [PHP] Скрипт проверки доступности сайта

    Скрипт, который проверяет доступность указанных сайтов по коду ответа от сервера (код 200 означает, что все ОК), и отсылает уведомление на электронную почту, если с сайтами что-то не так.

    Добавив данный скрипт в планировщик задач, можно постоянно мониторить состояние доступности сайтов.

    $url = array( 'http://site1.com/', 'http://site2.com/', 'http://site3.com/', 'http://site4.com/' ); foreach ($url as $val) { $answer = check_http_status($val); if ($answer == 200) echo 'Site '.$val.' is avaliable.', PHP_EOL; else { if ($answer == 28) // See code status - http://curl.haxx.se/libcurl/c/libcurl-errors.html { echo 'Resource '.$val.' is not responding. Time out operation (more than 10 sec)'. PHP_EOL; // Sending notification $from = "test@test.com"; $to = "admin@test.com"; $subject = "Resource is not available"; $message = "Resource $val is not available.\r\nHTTP status: $answer"; mail($to, $subject, $message,"Content-type:text/plain; charset = UTF-8\r\nFrom:$from"); } else { echo 'Resource '.$val.' is not avaliable. Reason: '.$answer.'. ', PHP_EOL; // Sending notification $from = "test@test.com"; $to = "admin@test.com"; $subject = "Resourceis not available"; $message = "Resource $val is not available.\r\nHTTP status: $answer"; mail($to, $subject, $message,"Content-type:text/plain; charset = UTF-8\r\nFrom:$from"); } } } function check_http_status($url) { $user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_VERBOSE, false); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $page = curl_exec($ch); $error = curl_errno($ch); if (!empty($error)) return $error; return ($httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE)); curl_close($ch); }

    Источник

    Проверка доступности сайта на PHP/JavaScript

    Проверка доступности сайта на PHP/JavaScript

    Проверка ответа сервера при помощи библиотеки cURL (Libcurl)

    Подключаемая библиотека cURL (в PHP она называется Libcurl) для работы с сетевыми протоколами HTTP. С ее помощью можно узнать ответ сервера и определить доступность запрашиваемого сайта. cURL работает практически на всех хостинг-площадках.

    Проверка HTTP статуса ответа от сервера

    Примеры строк User Agent

    • Mozilla Firefox 36 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0
    • Google Chrome 53 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
    • Google Chrome 40 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36
    • Opera 40 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36 OPR/40.0.2308.62
    • Opera 12.17 (Win 8 x64): Opera/9.80 (Windows NT 6.2; WOW64) Presto/2.12.388 Version/12.17
    • Apple Safari 5.1 (Win 8 x64): Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
    • Internet Explorer 11 (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko
    • Internet Explorer 11 (Win 8.1 x64): Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; ASU2JS; rv:11.0) like Gecko
    • Microsoft Edge (Win 10 x64): Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
    • iPhone: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
    • Android 2.3.5 (Philips W632): Mozilla/5.0 (Linux; U; Android 2.3.5; ru-ru; Philips W632 Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
    • iPad: Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25
    • Яндекс: Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)
    • Google: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
    • Bing: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
    • Yahoo! Slurp: Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
    • Mail.ru: Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Fast/2.0; +http://go.mail.ru/help/robots)
    • Sputnik: Mozilla/5.0 (compatible; SputnikBot/2.3; +http://corp.sputnik.ru/webmaster)
    • Ahrefs: Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)
    • Majestic: Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)
    • SMTBot: Mozilla/5.0 (compatible; SMTBot/1.0; +http://www.similartech.com/smtbot)
    • linkdex: Mozilla/5.0 (compatible; linkdexbot/2.2; +http://www.linkdex.com/bots/)
    • Exabot: Mozilla/5.0 (compatible; Exabot/3.0; +http://www.exabot.com/go/robot)
    • StatOnline.ru: Mozilla/5.0 (compatible; StatOnlineRuBot/1.0)

    Проверка доступности Интернета на JavaScript

    Пингуем сайт с умным использованием нативного Image объекта

    Это работает на всех типах серверов: веб-серверы, FTP-серверы и игровые серверы

    Источник

    Читайте также:  What is triple equals in javascript
    Оцените статью