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

관련 문제