Функция gethostbyname () PHP не кажется настраиваемой в отношении тайм-аутов. Я хочу ограничить запросы DNS на 1 секунду или меньше, так как больше показывает проблему и ее следует игнорировать.
Итак, есть ли способ сделать DNS-запрос с использованием сокетов или cURL? Я смог сделать SMTP-запросы, используя потоки PHP, которые сохраняли ресурсы сервера, поэтому я хочу сделать то же самое с DNS-запросами.
В комментариях к статье PHP есть несколько вариантов установки / включения тайм-аута:
<?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