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

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

Проверка доступности сайта с помощью 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_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() .

Читайте также:  Объединить массивы по ключу php

Чтобы узнать только 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 ;
>

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

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

Проверка внешних ссылок на доступность средствами PHP – это самый простой способ уберечь страницы сайта от битых исходящих ссылок. Один из распространенных источников появления не рабочих URL’ов является форма добавления комментариев к записям. Именно в комментариях, чаще всего встречаются ссылки ведущие в никуда. А такие ссылки, как известно, подрывают доверие к сайту со стороны поисковых систем.

Проверить доступность сайта с помощью PHP очень легко. Для этого в PHP 5 есть уже готовая функция, которая замечательно справляется с этой задачей.
get_headers() – возвращает массив заголовков, которые сервер отправляет при запросе.

Вот как это выглядит на конкретном примере:

Проверка URL: http://google.ru

Результат работы данного PHP скрипта выведет список всех заголовков ответа сервера по которым можно судить о доступности сайта.

Не буду описывать каждый заголовок, а остановлюсь на одном:
HTTP/1.1 200 OK(для протокола 1.1) или HTTP/1.0 200 OK(для протокола 1.0) если в массиве присутствует один из этих параметров, то можно с уверенностью сказать, что ссылка рабочая и ведет на конкретную страницу веб ресурса.

Читайте также:  Полноразмерные наушники лучшие модели

Казалось бы, всё просто, но есть один нюанс, который на сегодняшний день нельзя оставить без внимания. Это домен в зоне .рф. Дело в том, что функция get_headers() не понимает url’ов на кириллице. Поэтому если проверять URL на кириллице (МойСайт.РФ), то функция вернет FALSE и проверка внешней ссылки завершится ошибкой уровня E_WARNING.

Ну а поскольку, мы живем в Российской Федерации, и домены национальной зоны встречаются всё чаще и чаще, то PHP скрипт проверки ссылок на сайте, необходимо усовершенствовать. Для этого нам потребуется Punycode – конвертация.

– это конвертация символов в кодировке Unicode в формат, поддерживаемый инфраструктурой DNS. Алгоритм преобразования описан в стандарте RFC 3492.
Чтобы IDN(Интернационализованные доменные имена)-домен после преобразования нельзя было спутать с обычным доменом, все IDN-домены начинаются со специального префикса «XN—».
Для пользователей Рунета, которые первыми получили возможность регистрации и использования в своих проектах IDN-доменов в кириллической зоне .РФ, Punycode-преобразование применяется не только к имени домена, но и к зоне (домен верхнего уровня – .РФ). Псевдонимом, прописанным в DNS, для домена .РФ является сочетание символов «XN—P1AI». Таким образом, кириллический домен «МойСайт.РФ» после Punycode-преобразования будет выглядеть «XN—80ARBJKTJ.XN—P1AI».

На сайте www.phpclasses.org скачиваем файл «idna_convert.class.php» и подключаем к нашему PHP скрипту по проверке ссылок на доступность.

Теперь после проверки на наличие символов кириллицы в проверяемом URL выполняем Punycode-преобразование.

Готовый PHP скрипт для проверки URL:

Проверить данный PHP скрипт в действии можно в нижеприведенной форме.

Ссылка на основную публикацию
Сколько секунд видео можно загрузить в инстаграм
Обновлено - 27 января 2020 IGTV — функция, с помощью которой можно выложить длинное видео в Инстаграм продолжительностью от 15...
Секреты работы в word
Все секреты Word. MicrosoftWord – одна из наиболее часто используемых программ. Все мы пользуемся этим приложением, зачастую даже не зная...
Секс во время соревнований
Воздерживаться или не воздерживаться – вот в чем вопрос Джоэл Сидман, кандидат наук Вот что вам нужно знать… Влияние секса...
Сколько символов на странице ворд
Вы можете посмотреть пример стандартной страницы перевода в формате doc. В рынке переводов можно встретить разные варианты определения условной страницы:...
Adblock detector