[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как проверить существование сайта?
Владимир55
Требуется проверить существование сайтов, на которые ведут ссылки (интересуют их главные страницы). Пытаюсь это сделать так:

$kod_site = @file_get_contents("http://www.kami555.ru");
$dlina_kod_site = strlen($kod_site);
if (strlen($dlina_kod_site < 100)) echo "Нет такого сайта";


Эта операция производится в цикле с разными значениями адресов.

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

Как справиться с этой проблемой?
sergeiss
Цитата (Владимир55 @ 5.02.2015 - 22:34)
И почему то получается так, что некоторые сайты диагностируются как отсутствующие, тогда как в действительности они существуют, причем достаточно быстро открываются.

Адреса давай, смотреть будем.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Владимир55
К примеру:
http://www.kadelik.ru
http://www.mvei.ru
waldicom
Через curl забирать заголовки (HEAD)

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
twin
waldicom
А почему курлом? get_headers() не пойдет здесь?

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
waldicom
Забыл или не знал про такую. Почитал - вполне себе подходящая функция.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Владимир55
Как оказалось, не все так просто.


		$url = 'http://mail.ru/';

print_r(get_headers($url, 0));



К примеру, при обращении к https://mail.ru/ получаем диагностическое сообщение:
Цитата
Warning: get_headers(http://www.mail.ru) [function.get-headers]: failed to open stream: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?


Вероятно потому, что правильное обращение к этому сайту https://mail.ru/

Но при таком вызове страницы получаем диагностическон сообщение
Цитата
Warning: get_headers() [function.get-headers]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP?


Это как-то решается?
killer8080
Владимир55
проверь в phpinfo() наличие open ssl



Спустя 2 минуты, 28 секунд killer8080 написал(а):
Кстати существование сайта и его доступность, не одно и тоже. Сайт может тупо лежать во время опроса от какой нибудь атаки, или просто перегружен и т.п.
Владимир55
Цитата
Configuration

apache2handler

Apache Version Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/1.0.1c PHP/5.3.13

В секции curl есть
Цитата
SSL Version OpenSSL/1.0.1c


Не то?
killer8080
должна быть секция openssl
user posted image
Владимир55
А такого нету...

Работаю на Денвере. В настройках есть закомментированная строка
Цитата
extension=php_openssl.dll


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

Что можно сделать в этом случае?
killer8080
Цитата (Владимир55 @ 6.02.2015 - 14:11)
Что можно сделать в этом случае?

установить полный денвер, со всеми модулями
видимо php_openssl.dll нет в папке с расширениями.
Владимир55
Спасибо, заодно и расширил функционал Денвера!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.