2016-08-19 2 views
0

Когда я делаю это:выполнение gethostbyname для максимального 1 секунду

print gethostbyname("google.ro"); 

Он печатает IP менее чем за 1 секунду.

Если я пытаюсь сделать то же самое с доменом unexisting:

print gethostbyname("cduri.ro"); 

Он пытается получить IP-адрес, как за 7-8 секунд, после чего он терпит неудачу и будет печатать домен вместо этого.

Что я хочу достичь, так или иначе сломать gethostbyname через 1 секунду, потому что я знаю, что это означает, что домен не существует. У меня есть большой список доменов, поэтому я не могу ждать 7-8 секунд для каждого домена, который не может быть достигнут. Я хочу остановиться и перейти к следующему.

Есть ли способ достичь этого?

ответ

0

Я посмотрел в руководстве: http://www.php.net/manual/en/function.gethostbyname.php и нашел это:

Варианты базовых функций разрешителя может быть поставлен с помощью переменных окружений RES_OPTIONS. (По крайней мере под Linux, см человека resolv.conf) Установите тайм-аут и число повторных попыток 1, чтобы иметь максимальное время выполнения 1 секунды для поиска DNS:

putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1'); 
gethostbyname($something); 

Вы не видели, что? Или вы не используете Linux? Это не работает для вас? В руководстве больше предложений, я не собираюсь перечислять их все.

+0

В настоящее время я тестирую в своей wamp (windows), но когда я выйду вживую, у меня, вероятно, будет сервер linux. – paulalexandru

+0

Вы отправили свой вопрос в Linux, поэтому я дал ответ на Linux. Очевидно, что вам нужны другие решения для Windows. PHP в основном использует базовые подпрограммы, доступные в ОС, поэтому вам нужно контролировать тайм-аут этого. Если вы это сделаете, чтобы проверить адреса электронной почты, есть другие способы сделать это. –

+0

Да, но с PHP мы можем определить, запускаем ли мы на Linux или сервере Windows, что означает, что мы можем реализовать 2 привязанных решения, чтобы работать на любом сервере правильно? – paulalexandru