php проверить доступность url
Проверка ссылок средствами PHP
Проверка внешних ссылок на доступность средствами 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) если в массиве присутствует один из этих параметров, то можно с уверенностью сказать, что ссылка рабочая и ведет на конкретную страницу веб ресурса.
Ну а поскольку, мы живем в Российской Федерации, и домены национальной зоны встречаются всё чаще и чаще, то PHP скрипт проверки ссылок на сайте, необходимо усовершенствовать. Для этого нам потребуется Punycode – конвертация.
На сайте www.phpclasses.org скачиваем файл «idna_convert.class.php» и подключаем к нашему PHP скрипту по проверке ссылок на доступность.
Теперь после проверки на наличие символов кириллицы в проверяемом URL выполняем Punycode-преобразование.
Готовый PHP скрипт для проверки URL:
Проверить данный PHP скрипт в действии можно в нижеприведенной форме.
Ручной мониторинг доступности сайта (обзор простых инструментов)
После покупки виртуального и/или выделенного сервера важно вовремя получать информацию о недоступности сервиса, то есть проводить мониторинг основных подсистем веб-сайта.
Надежный веб-сайт должен быть легкодоступен для пользователей 7 дней в неделю, поэтому его надо постоянно проверять как на предмет доступности, так и на предмет работоспособности:
Работа сайта в выходные/сезон отпусков
Есть задача: веб-сайт/сервер/сервис должен работать непрерывно несколько дней без человеческого вмешательства. Что может пойти не так?
Обычные сбои время от времени случаются сами по себе. Только вот ночной сбой со вторника на среду решается перезаливом с бэкапа в среду утром. А на выходных нередки сбои «с пятницы на понедельник». Сколько в таком случае может лежать сайт во время праздников, зависит от длительности отпуска ответственных сотрудников.
В целом, сайту бывает нехорошо, но в будние дни проблема решается быстро. Сколько времени заняло бы решение на майских, если бы не мониторинг? Вместо пары часов могло бы быть пару дней, и это не редкость.
Не делайте серьезных изменений кода перед длительными выходными. Необходимо тщательно протестировать систему с внесенными правками, чтобы изменения работали должным образом. Рекомендуется откладывать внесение каких-либо серьезных изменений до того момента, когда веб-сайт испытывает меньше нагрузки на трафик.
Кроме обычных проблем, сайты во время длительного отсутствия бдительных стражей любят также подхватить и другие недуги. Например, может закончиться срок действия домена или сертификата. Или надумает растолстеть база данных. Или он может угодить в списки DNSBL или Роскомнадзора.
Черные списки DNSBL
Важной функцией является проверка доменов в черных списках DNSBL (DNS blacklist или DNS blocklist) — списки хостов, хранимые с использованием системы архитектуры DNS. Обычно используются для борьбы со спамом.
Эти списки независимы и формируются каждый по своему алгоритму, из-за чего в результате случайной ошибки там может оказаться даже безобидный сайт. IP адрес из вашей подсети может использоваться в злонамеренных целях, например, спамерами или другими злоумышленниками, в результате чего вся подсеть может оказаться заблокированной в черном списке соответствующей структуры.
Чем это грозит именно вам? Письма от вас перестанут приходить клиентам, сайт станет хуже отображаться в поисковиках и так далее по нарастающей. Поэтому функция контроля и оповещения о попадании в наиболее популярные черные списки является весьма востребованной.
Каждый администратор может настроить свой веб-сервер таким образом, чтобы, например, не получать письма от серверов, перечисленных в определенном списке. Это помогает бороться со спамом, распространением вредоносного ПО, DDoS-атаками и другими проблемами.
Онлайновые черные списки DNSBL, например, antispamsniper.com или syslab.ru, позволяют фильтровать спам, используя DNS для доступа к базам спамерских IP адресов.
Для проверки наличия заданного IP адреса в черных списках введите IP адрес (ваш текущий IP адрес указывается по умолчанию) и нажмите кнопку Проверить.
Защита от DDoS-атак
Если от доступности веб-сайта зависит прибыль, то следует подготовить его к возрастающим нагрузкам (например, во время сезонных распродаж или Черной пятницы) и возможным атакам конкурентов и/или злоумышленников, которые рассчитывают на увеличение времени отклика веб-сайта на входящие запросы или на частичную/полную недоступность.
Планирование технических работ
Программное обеспечение сервера, на базе которого построен веб-сайт или иной ресурс, должно периодически обновляться.
Планирование технических работ позволяет достигнуть двух целей: не присылать оповещения об ошибках и не записывать ошибки во время определенного интервала времени в статистику. При этом проверки во время технических работ все так же идут и исправно пишутся в лог, а следовательно могут быть полезными для администраторов: лог позволяет определить, сколько именно длилось обновление или перезагрузка, какие ошибки при этом выдавались, какие проблемы при этом наблюдались и так далее.
Рекомендуется проводить плановые работы во время заметного уменьшения (редуцирования) клиентского трафика, а также во время отсутствия пиковой загрузки полосы пропускания.
Мониторинг срока действия домена и SSL-сертификата
Проблемы с продлением доменов и сертификатов возникают даже у больших компаний. Поэтому оповещение (по СМС или электронной почте), что данный домен необходимо продлить, является крайне полезным. Например, ping-admin.ru предоставляет платные услуги оповещения о результатах мониторинга.
Проверка срока действия домена
Проверить домен бесплатно можно с помощью сервиса nic.ru.
Проверить время действия домена бесплатно можно с помощью сервиса Whois Service.
Проверка срока действия SSL-сертификата
Выполните следующую команду из командной строки в Linux, чтобы узнать срок действия SSL сертификата, с помощью openssl:
Помимо срока действия, SSL сертификат содержит много интересной информации. Каждый SSL сертификат содержит информацию о том, кем он был выдан, кому он выдан, его срок действия и прочее.
Все эти данные могут быть извлечены из SSL сертификата сайта с помощью программы openssl из командной строки в Linux.
Проверить кто выдал SSL сертификат:
Проверить кому выдан SSL сертификат:
Показать всю перечисленную выше информацию об SSL сертификате одной командой:
Мониторинг доступности сайта
Для эффективной работы любого посещаемого веб-сайта необходима постоянная доступность его материалов для посетителей, а также возможность для администратора проекта иметь доступ к серверной части для внесения изменений или любых других действий.
Вы легко можете проверить доступность сайта из командной строки в Linux и получить от сервера код со статусом HTTP, с помощью таких команд как TELNET или CURL.
Доступность сайта с помощью CURL
Выполните следующую команду для проверки доступности сайта и получения сообщения со статусом от сервера:
Статус код ‘200 OK’ означает что запрос был успешно выполнен и сайт доступен.
Вот еще один пример, который показывает как curl отображает разные ответы сервера:
Также с помощью curl можно проверить доступность отдельной страницы на сайте, например:
Доступность сайта с помощью TELNET
Вы также можете проверить доступность сайта и получить сообщения со статусом от сервера с помощью команды telnet:
Вывод, означающий, что сайт доступен, будет выглядеть следующим образом:
В заключении хочется отметить, что всегда есть вариант написать свой скрипт для проверки аптайма на PHP или Perl, или можно создать телеграм-бота для рассылки уведомлений, но подсчитав дневной доход с веб-сайтов и соотнеся его со стоимостью мониторинга, чаще дешевле использовать платные сервисы типа PagerDuty.
Полезные статьи со обзорами сервисов мониторинга:
Проверка доступности сайта с помощью PHP
Аптайм сайта (от англ. uptime) — время его непрерывной работы – крайне важная характеристика доступности сайта. Для того чтобы убедиться в доступности или недоступности сайта, необходимо выполнить проверку. Проверку доступности сайта можно провести с помощью PHP скрипта, о чем мы и поговорим далее.
Самый простой инструмент для проверки сайта на доступность – это модуль PHP cURL. С помощью него мы будем выполнять проверку статуса доступности того или иного сайта.
Проверка доступности сайта
Следующий кусочек кода используется для проверки доступности домена с помощью cURL. Для большей полезности, весь код, приведенный снизу, обернут в функцию, которая называется isSiteAvailable().
// Проверка правильности 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);
Как использовать?
Вызывайте функцию isSiteAvailable() со строковым аргументом, представляющим собой URL адрес сайта, доступность которого вы хотите проверить. И в зависимости от ответа вы можете предпринимать дальнейшие действия.
Вот так просто можно проверить, доступен ли сайт или нет с помощью PHP и cURL.
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 1 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.
H Мониторинг доступности сервера или сайта с применением PHP в черновиках
Применения PHP для целей системного администрирования редкая вещь, но для решения простых задач — это вполне допустимо. На Хабре данная тематика освещена слабо. Но возможно представить ситуацию, когда у человека есть знания PHP и его основная работа не дает времени изучить что-то другое, например, Python или Perl. Вот для такой категории людей может пригодится эта статья.
Предлагаемый скрипт дает возможность пинговать серверы и получать код состояния HTTP. Соответственно можно оперативно узнать время выхода сайта из строя или отсутствие доступности какого-то сервера для ping. Оповещение приходит на email и СМС. Решение с почтой вряд ли вызовет вопросы, чего не скажешь об отправке СМС. Реализация отправки сообщений на телефон организована с помощью услуг сайта sms.ru. Данный сервис предоставляет до 60 бесплатных СМС программистам для своих разработок. Вам потребуется зарегистрироваться на сайте и в разделе «Программистам» взять готовый PHP-пример для отправки сообщений на свой телефон. Он будет выглядеть примерно так:
Практически без изменений пример попадет в скрипт. В вашем варианте будет другой ID и номер телефона соответственно.
Скрипт мониторинга рассчитан для работы на Linux системе. Обратите внимание, чтобы выполнить скрипт в терминале указывая просто название, его потребуется сделать исполняемым командой chmod +x и в начало текста программы добавить #!/usr/bin/env php, что уже сделано в нашем случае. Иначе, имя скрипта в терминале придется предварять словом php. Также, удобно запускать скрипт с помощью cron каждые 30 минут. Для обкатки рекомендую запустить вначале в терминале, если будут ошибки они отобразятся на экране.
Для правильной работы на компьютере должны быть установлены и настроены: PHP, PHP-CLI, sendmail.
Проверка доступности сайта
Многие сайты доступны, но есть те которые либо уже не существуют, либо отдают 504, 500 код.
Вот с такими-то сайтами и проблема. В основном код срабатывает как надо. Через 2 секунды функция возвращает мне false.
Но иногда при проверке некоторых сайтов весь скрипт зависает, вплоть до ошибки об истечении 30 секунд на выполнение. Не понимаю почему. Сначало грешил на функцию которая берет файл с сайта, но потом после нескольких часов понял что код останавливается именно на функции проверки доступности сайта.
Подскажите в чем мой косяк?
Кстати на всякий случай вот код, который берет файл.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Проверка доступности имени пользователя на PHP
Всем привет. Что именно мне нужно поменять в этом файле, чтобы у меня сравнение шло из базы данных.
Проверка доступности сайта
Добрый день! Использую Embarcadero RAD Studio XE7 Нужно проверить доступность сайта с помощью.
Проверка internet connection. Проверка доступности сети
Добрый день. Для проверки Internet Connection советуют делать что-то вроде: private boolean.
Para bellum, Я понял что ты хочешь сказать. Но нет, не в цикле. В том-то и дело. Вызывается функция при загрузке страницы, но не чаще чем раз в 3-4 секунды.
Но почему то иногда намертво все зависает. Пробовал убирать ограничение на выполнение скрипта (30 сек). Но тогда страница бесконечно грузится. Вот как. Можно как-нибудь попробовать точно отследить на какой строке идет зависание?
Добавлено через 26 секунд
Para bellum, Я понял что ты хочешь сказать. Но нет, не в цикле. В том-то и дело. Вызывается функция при загрузке страницы, но не чаще чем раз в 3-4 секунды.
Но почему то иногда намертво все зависает. Пробовал убирать ограничение на выполнение скрипта (30 сек). Но тогда страница бесконечно грузится. Вот как. Можно как-нибудь попробовать точно отследить на какой строке идет зависание?