PHP проверка сайта на доступность

uncle17

есть список УРЛов. Можно ли как-то проверить скриптом доступность их в данный момент времени? Не учитывая специализированные странички под 404...

evgen5555

curl

uncle17

иопт:( А ты в нем разбираешься? Це ж, имхо, три строки написать?

evgen5555

Хз, я вообще не на PHP пишу, встречалось просто разок.

uncle17

ясно... бум изучать

stm7884696

Вот есть сайтец, присылает ежедневные/еженедельные/ежемесячные отчеты о доступности сайта... Период проверки и остальное настраивается.
Бесплатно.
http://host-tracker.com/

uncle17

Не совсем то имхо.

stm7884696

да я уж понял... но как вариант - можно попробовать дабыть у них инфу о том, как они проверку делают...
Например - с позиции пользователя, или в ФАКе...

sergey_m

Отвлеченный рассказ:
На одной из моих прошлых работы был хостинг. На нём было много горе-сайтов написанных на PHP. Создатели сайтов считали себя программистами, а админов хостинга - мудаками. Конечно, когда сайт начинал глючить, то виноваты были админы-мудаки. Корпоративная политика не позволяла посылать клиентов нахуй, а советовала их любить и заботиться о них. Чаще всего админы включали лог MySQL запросов и показывали программистам, что на открытие одной страницы делается 1500 запросов, из них уникальных 100, объясняли программистам, что никакой хостинг не будет быстро обслуживать такие сайты.... Отвлекся я... Короче, в один прекрасный день, позвонил клиент и объявил, что сайт не работает. Смотрим, действительно не работает - половина страницы прогружается и висит. Ну админы конечно решили, что делается какой-то очень огромный запрос в MySQL, однако это оказалось не так. httpd просто висит и всё. Почесали репы, обнаружили, что httpd висит в сисколле connect. Открыли скрипт (написанный веб-программистами и как следствие очень понятный) и стали там искать, откуда же взялся connect. Нихуя не нашли. Позвонили клиенту и сказали, что мол делает куда-то connect, разбирайтесь сами. Клиент позвонил директору и сказал, что админы-мудаки вешают ему лапшу на уши. Директор попросил админов разбираться дальше. Админы воспользовались tcpdump и увидели, что connect делается на 80 порт какого-то другого сайта. Ни IP адрес сайта, ни его DNS имя в скрипте не нашли. Еще раз просмотрели весь скрипт пытаясь найти там, что-то связанное с connect не нашли. Долго чесали репы. Один из админов в это время стал изучать базу MySQL клиента. В одной из таблиц он обнаружил куски кода на PHP. Потом в скрипте было найдено место, где код берётся из таблицы и выполняется. И в одной из записей этой таблицы была проверка сайта на доступность на PHP, которая делала GET запрос и искала в ответе ключевое слово. И как вы уже догадались, в этот прекрасный день данный сайт был недоступен.
Кстати код из таблицы вынесли и клиенту прочитали лекцию. Но нихуя! Их программист опять вставил проверку назад, и в другой прекрасный день клиент опять звонил.

stm7884696

сЦЦука....
Нарошно не придумаешь...
Поотрывал бы руки нах!
Понаберут умников за 200$ на работу....

uncle17

хреновый намек...
Мне это нужно сделать один раз и мне не очень хочется тыкать мышкой в полторы тысячи адресов, чтоб выяснить, что доступно, а что - нет.

stm7884696

ботай сетевые протоколы...
где нить в мануале смотри...
А что бы намека небыло - поставь как нить обработку ошибки... Если повиснет нах...

artimon

А обязательно это делать на PHP?
Есть же уже написаные программы, которые умеют проверять списки адресов.

uncle17

А трафика они кушают при этом сколько? Чтоб только заголовки получить или всю страницу грузят? Поделись названием хоть одним...

tokuchu

Там примеры есть:
http://curl.haxx.se/libcurl/php/examples/?ex=simpleget.php
Если нужно только заголовок, то добавь
curl_setopt ($ch, CURLOPT_NOBODY, 1);

uncle17

Большой список всё равно не получается - отрубает по таймауту. URL-чекерами действительно всё получается хорошо.

Ivan826

Слушайте, я не пробовал, не знаю, но если просто обратиться к странице и считать её текст разве нельзя отловить, существует она или нет?

traffik

Даже не текст. Только HTTP-заголовок. Страницу целиком брать не надо. Тем более, обрабатывать.
_________________________________
- Завтра мы открываем новую страницу нашей жизни.
- По-моему, это бессмыслица, - сказал Леопольд. - Когда открываешь новую страницу, видишь всего-навсего обратную сторону предыдущей.

Marinavo_0507

А если сервер заголовок отдаёт, а дальше рвёт связь или подвисает?

traffik

Тады ой. Часто такое встречали? Если лезть в тонкости, единственный надежный способ - кешировать страницу. Все остальные тоже ненадежны. Вдруг заберете страницу, а сервер станет недоступен через секунду? Всего не учесть.
_______________________________
- Девочки, я вам тысячу раз говорила, все хорошие парни слабоваты в постели и занудны. Но что подсказывает практика?
- Интересные мужчины тоже становятся занудами, а плохие тоже слабоваты в постели, - ответили мы хором.

Marinavo_0507

> Часто такое встречали?
Чаще, чем хотелось бы.
> Вдруг заберете страницу, а сервер станет недоступен через секунду?
Тогда мы всё ещё будем знать, что секунду назад он смог отдать страницу.

yakoalek

А чем плох метод HEAD вместо GET/POST?
И почему вообще не нравится обычный fsockopen c таймаутом, например, 10-20?
В каком смысле вообще возникает таймаут? max_execution_time в php не учитывает время коннекта, время запроса к базе данных и пр.
Оставить комментарий
Имя или ник:
Комментарий: