2010-11-29 65 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