проверить есть ли конект к домену

  • Автор темы Автор темы pehser
  • Дата начала Дата начала

pehser

Новичок
проверить есть ли конект к домену

Есть скрипт в котором на хосте при наличии нета парсит данные с другого сайта, но надо сделать чтоб он могу работать и на машине где нету инета , пытался сделать быструю проверку конекта $fh = @fsockopen($host, 80, $errno, $errstr,1); но все равно долго висит (примерно все время что отведено на выполнение скрипта) не смотря на то что таймаут 1 сек и результат php_network_getaddresses: getaddrinfo failed
Подскажите как правильно сделать проверку чтоб она быстро выполнялась.
 
Я так понимаю подвисает на попытке получения IP, а не в момент соединения с необходимым сервером. Если есть возможность, попробуй вместо хостнейма IP писать.
 
Автор оригинала: Вурдалак
Я так понимаю подвисает на попытке получения IP, а не в момент соединения с необходимым сервером. Если есть возможность, попробуй вместо хостнейма IP писать.
1. Придется постоянно отслеживать не поменялся ли IP
2. Если домен на виртуальном хосте то не вариант
 
Почему «постоянно»? И почему «не вариант»?

Понятия «коннект к домену» в принципе нет.
 
смотри есть хост ip 100.100.100.100
на нем крутится 100 виртуальных доменов (у всех уних этот ip и толком не понятно смог я содиниться снужным мне сайтом или нет)
а мне нужен только один изхних, который через какоето время решил прехать к другому хостеру на хост 100.150.150.150
 
напиши скрипт котрый по крону пингует твой домен и ложит ИП в какой нибудь фаил, а свои скриптом читай ип отудава...
+ статус доступности, чтобы лишний раз не конектиться...
 
Ну так основная проблема у тебя с timeout'ом, насколько я понял. При отсутствии соединения по IP считать, что интернета нет.

Попробуй поискать в сторону «gethostbyname timeout».
 
Вурдалак
инета нету, конект к днс серверу в следствии тоже не будет, в этом и таймаут...
 
iceman, проблема именно с timeout'ом запроса к DNS-серверу, проблемы с попыткой соединения напрямую по IP быть не должно. Значит можно попытаться сначала подключиться к какому-то серверу с высоким uptime, потом уже пытаться выполнить DNS-запрос.
 
> проблема именно с timeout'ом запроса к DNS-серверу
я об этом и говорю, таймаут в подключение к ДНС серверу, на уровне пхп это не исправить...

>Значит можно попытаться сначала подключиться к какому-то серверу с высоким uptime

инета нету, не к кому не подрубишся! хоть по ип...
 
iceman, ещё раз: я не подключусь, но timeout должен сработать. Одна секунда.
 
Всем спасибо помогло
function getAddrByHost($host, $timeout = 2)
{
$query = `nslookup -timeout=$timeout -retry=1 $host`;
if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
return true;
return false;
}
 
Сверху