2010-11-29 4 views
4

Функция PHP gethostbyname(), по-видимому, не может быть конфигурирована с учетом тайм-аутов. Я хочу ограничить запросы DNS на 1 секунду или меньше, так как больше показывает проблему и ее следует игнорировать.Получите IP-адрес от DNS без использования gethostbyname?

Итак, есть ли способ сделать DNS-запрос с использованием сокетов или cURL? Я смог сделать SMTP-запросы, используя потоки PHP, которые сохраняли ресурсы сервера, поэтому я хочу сделать то же самое с DNS-запросами.

ответ

4

Комментарии по PHP article есть несколько вариантов установки/включая тайм-аут:

<?php 
function getAddrByHost($host, $timeout = 3) { 
    $query = `nslookup -timeout=$timeout -retry=1 $host`; 
    if(preg_match('/\nAddress: (.*)\n/', $query, $matches)) 
     return trim($matches[1]); 
    return $host; 
} 
?> 

http://www.php.net/manual/en/function.gethostbyname.php#92870

+2

@Xeoncross: Это, вероятно, ваш лучший выбор. В противном случае вы можете посмотреть раздел `4.2` RFC (http://www.faqs.org/rfcs/rfc1035.html) и узнать, как отправить свой собственный пакет. – 2010-11-29 16:15:15

Смежные вопросы