当在PHP中执行基本curl请求到纯文本网页(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);
Run Code Online (Sandbox Code Playgroud)
这是信息:
[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 ( )
Run Code Online (Sandbox Code Playgroud)
小智 8
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
Run Code Online (Sandbox Code Playgroud)
解决了我的问题.IPV6有一个不起眼的bug.
我无法完全使用上面的代码重复此操作 -namelookup_time在我的(Windows)机器上返回为0, 并total_time为 ~ 0.5。namelookup_time是操作系统解析 的 DNS 名称所花费的时间whatismyip.org,因此您需要检查服务器的 DNS 配置。
据猜测,您配置的主 DNS 服务器不存在/无法工作,超时为 10 秒。这意味着操作系统将等待 10 秒来尝试联系主 DNS,当超时时,操作系统将转至辅助 DNS,从而正常工作。
您配置的 DNS 服务器是什么?如果需要,请尝试使用8.8.8.8(Google) 作为您的主要 DNS。
附带说明一下,最好为 cURL提供完整的http://whatismyip.org/URL,因此请使用而不是 just whatismyip.org- 尽管这似乎不是此特定问题的原因。