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

pehser

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

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

Вурдалак

Продвинутый новичок
Я так понимаю подвисает на попытке получения IP, а не в момент соединения с необходимым сервером. Если есть возможность, попробуй вместо хостнейма IP писать.
 

pehser

Новичок
Автор оригинала: Вурдалак
Я так понимаю подвисает на попытке получения IP, а не в момент соединения с необходимым сервером. Если есть возможность, попробуй вместо хостнейма IP писать.
1. Придется постоянно отслеживать не поменялся ли IP
2. Если домен на виртуальном хосте то не вариант
 

Вурдалак

Продвинутый новичок
Почему «постоянно»? И почему «не вариант»?

Понятия «коннект к домену» в принципе нет.
 

pehser

Новичок
смотри есть хост ip 100.100.100.100
на нем крутится 100 виртуальных доменов (у всех уних этот ip и толком не понятно смог я содиниться снужным мне сайтом или нет)
а мне нужен только один изхних, который через какоето время решил прехать к другому хостеру на хост 100.150.150.150
 

iceman

говнокодер
напиши скрипт котрый по крону пингует твой домен и ложит ИП в какой нибудь фаил, а свои скриптом читай ип отудава...
+ статус доступности, чтобы лишний раз не конектиться...
 

Вурдалак

Продвинутый новичок
Ну так основная проблема у тебя с timeout'ом, насколько я понял. При отсутствии соединения по IP считать, что интернета нет.

Попробуй поискать в сторону «gethostbyname timeout».
 

iceman

говнокодер
Вурдалак
инета нету, конект к днс серверу в следствии тоже не будет, в этом и таймаут...
 

Вурдалак

Продвинутый новичок
iceman, проблема именно с timeout'ом запроса к DNS-серверу, проблемы с попыткой соединения напрямую по IP быть не должно. Значит можно попытаться сначала подключиться к какому-то серверу с высоким uptime, потом уже пытаться выполнить DNS-запрос.
 

iceman

говнокодер
> проблема именно с timeout'ом запроса к DNS-серверу
я об этом и говорю, таймаут в подключение к ДНС серверу, на уровне пхп это не исправить...

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

инета нету, не к кому не подрубишся! хоть по ип...
 

Вурдалак

Продвинутый новичок
iceman, ещё раз: я не подключусь, но timeout должен сработать. Одна секунда.
 

pehser

Новичок
Всем спасибо помогло
function getAddrByHost($host, $timeout = 2)
{
$query = `nslookup -timeout=$timeout -retry=1 $host`;
if(preg_match('/\nAddress: (.*)\n/', $query, $matches))
return true;
return false;
}
 
Сверху