PHP. Как лучше всего проверить существует ли сайт или нет

есть адрес сайта, каким оптимальным способом можно проверить его существование?
CURL
get_headers
fsockopen
fopen
  • Вопрос задан
  • 5559 просмотров
Пригласить эксперта
Ответы на вопрос 8
FAT
@FAT
Developer
Делал такую реализацию на PHP, вот рабочий код:

<?

$website = «www.site.ru»
// Открываем соединение с сокетом и связываем его с переменной
$sock = fsockopen ($website, 80, $errno, $errstr);
//Если соединение не установлено, то будет ошибка
if (!$sock)
{
echo("$errno($errstr)");
return;
}
//Иначе проверяем доступность ресурса и записываем результат
else
{
fputs ($sock, «GET / HTTP/1.0\r\nHost: www.example.com\r\n\r\n»);
$status = substr(str_replace(":",":      ", fgets($sock,128)), 9);
if(substr($status,0,6)!=«200 OK»)
echo «Сайт недоступен!»
}
//Закрываем соединение
fclose ($sock);

?>
Ответ написан
@videns
Использовать функцию gethostbyname:

www.php.net/manual/en/function.gethostbyname.php

Если выдаст ip, значит сайт зарегистрирован и делегирован
Ответ написан
Комментировать
MyraJKee
@MyraJKee
Если просто проверить, то curl. Написан на C. Т.е. языке более низкого уровня… Следовательно работать должен побыстрее… А вообще если вы спамом массовым не занимаетесь или не изобретаете пауков каких-нибудь или еще что-то в этом роде, пишите так как вам удобно.
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Никак.
Если домен указывает на какой-либо IP и на этом IP крутится хоть какой то сайт — то по домену откроется дефолтный сайт для IP.
Ответ написан
Комментировать
@Shizz
Ну более-менее приемлемый вариант — читать статус-код HTTP. Это позволит лишь узнать, что на данном домене крутится веб-сервер. Но на самом деле там может лежать REST backend для AJAX морды, например. Стопроцентной вероятности никакая более-менее быстрая проверка не даст.
Ответ написан
Комментировать
slang
@slang
Не совсем понятно что Вы хотите сделать. Если узнать существует ли (делегирован) домен — обратитесь CURLом на Whois-сервис, коих в интернете множество, и распарсите ответ. Если, вертится ли по адресу, указанному доменным именем, веб-сервер, CURLом дёрните это имя, и отпарсите ответ. Если отвалитесь по таймауту — нету, если ответят — что-то есть. А если жив ли в данным момент сайт — то ещё отпарсите и код ответа/ошибки.
Ответ написан
Комментировать
@klepton
nsllokup
Ответ написан
Комментировать
@klepton
пардон, nslookup
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы