在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 ( )
答案 0 :(得分:8)
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
解决了我的问题。 IPV6有一个不起眼的错误。
答案 1 :(得分:3)
我无法使用上面的代码重复此操作 - 我的(Windows)计算机上的namelookup_time
返回0
,total_time
为〜0.5
。 namelookup_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服务器没有响应。