Содержание
Аптайм сайта (от англ. 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 адрес сайта, доступность которого вы хотите проверить. И в зависимости от ответа вы можете предпринимать дальнейшие действия.
Вот так просто можно проверить, доступен ли сайт или нет с помощью PHP и cURL.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Она выглядит вот так:
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2019 Русаков Михаил Юрьевич. Все права защищены.
Проверка доступности сайта с помощью fopen()
Скрипт, приведенный ниже, пытается прочитать страницу (картинку, css-файл и др.), по заданному url. Если ответ от сервера с содержимым не поступит в течении 10 секунд, сайт или то, что запрошено, будет считаться не доступным.
По умолчанию в 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_VAL >) )
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 ;
>
Всем привет.
Есть скрипт который проверяет доступность сервера.
Как сделать так, что бы проверялся не один сайт, а несколько?
Просто копировать этот код, дважды не очень удобно.
- Вопрос задан более трёх лет назад
- 1716 просмотров
В функцию передавай несколько доменов.
К примеру есть массив из 2 сайтов array(‘site1′,’site2’);
Просто в цикле передавай значения массива
И сам результат