curl namelookup_time 10秒

时间:2012-01-03 12:16:41

标签: php curl

在PHP中执行基本卷曲请求到纯文本网页(http://whatismyip.org/)时,响应时间超过10秒。

从curl查看信息后告诉我,namelookup_time是10秒。从命令行(终端)执行curl时,我可以看到完全相同的结果。

为什么名称查找需要这么长时间,从我读过的内容来看,这可能与托管PHP文件的服务器/我的电脑有关。


这是我的代码:

$ch = curl_init();  
curl_setopt( $ch, CURLOPT_URL, "whatismyip.org");
curl_exec( $ch );

$ci = curl_getinfo($ch);
print_r($ci);

以下是信息:

[url] => HTTP://whatismyip.org 
[content_type] => text/plain 
[http_code] => 200 
[header_size] => 45 
[request_size] => 53 
[filetime] => -1 
[ssl_verify_result] => 0 
[redirect_count] => 0 
[total_time] => 10.549943 
[namelookup_time] => 10.100938 
[connect_time] => 10.300077 
[pretransfer_time] => 10.300079 
[size_upload] => 0 
[size_download] => 14 
[speed_download] => 1 
[speed_upload] => 0 
[download_content_length] => -1 
[upload_content_length] => 0 
[starttransfer_time] => 10.549919 
[redirect_time] => 0 
[certinfo] => Array ( )

3 个答案:

答案 0 :(得分:8)

curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);

解决了我的问题。 IPV6有一个不起眼的错误。

答案 1 :(得分:3)

我无法使用上面的代码重复此操作 - 我的(Windows)计算机上的namelookup_time返回0total_time为〜0.5namelookup_time是操作系统为解析whatismyip.org的DNS名称所花费的时间,因此您需要检查服务器的DNS配置。

猜测,您配置的主DNS服务器不存在/不起作用,超时为10秒。这意味着操作系统将等待10秒钟尝试联系主DNS,并且当这个超时时间落到辅助服务器上时,操作系统会正常工作。

您配置的DNS服务器是什么?如果需要,请尝试使用8.8.8.8(Google)作为主DNS。

作为旁注,最好为cURL提供完整网址,因此请使用http://whatismyip.org/而不是whatismyip.org - 尽管这似乎不是这个具体问题的原因。

答案 2 :(得分:2)

可能您的某个DNS服务器没有及时回复。对/etc/resolv.conf中列出的所有IP都尝试此命令:

dig @IP.TO.DNS.SERVER google.com

如果我没错,您的某个DNS服务器没有响应。