2010-11-29 155 views
4

对于超时而言,PHP的gethostbyname()函数似乎不可配置。我想将DNS请求限制为1秒或更少,因为它们显示出问题,应该忽略。从DNS获取IP而不使用gethostbyname?

那么,有没有办法使用套接字或cURL来进行DNS查询呢?我能够使用保存服务器资源的PHP流进行SMTP请求,所以我正在寻求与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:这可能是你最好的选择。否则,您可以查看RFC(http://www.faqs.org/rfcs/rfc1035.html)的“4.2”节,并了解如何发送自己的数据包。 – 2010-11-29 16:15:15