2010-11-29 10 views
4

PHPのgethostbyname()タイムアウトに関する限り、機能は設定可能ではないようです。 DNS要求を1秒以下に制限したいので、もう問題があるので無視する必要があります。gethostbynameを使用せずにDNSからIPを取得しますか?

だから、代わりにソケットやcURLを使ってDNSクエリを作成する方法はありますか?私は、サーバーリソースを節約したPHPストリームを使用してSMTPリクエストを行うことができました。そのため、DNSクエリでも同じことをするつもりです。 PHP article

答えて

4

コメントはタイムアウトを含む/設定するためのいくつかのオプションがあります。

<?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を見て自分のパケットを送る方法を知ることができます。 –

+1

[backtick '](http://php.net/operators.execution)は[shell_exec()](http://php.net/shell-exec)の省略形です。 – mikeytown2

関連する問題