2012-01-03 74 views
4

在PHP中向纯文本网页(http://whatismyip.org/)执行基本curl请求时,需要超过10秒的响应时间。10秒钟的curl namelookup_time

看着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 () 

回答

2

我不能重复这个使用完全相同上面的代码 - 我的(Windows)中的计算机上namelookup_time伤愈复出为0,其中total_time为〜0.5namelookup_time是操作系统用来解析whatismyip.org的DNS名称的时间,因此您需要检查您的服务器的DNS配置。

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

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

作为一个侧面说明,最好是提供一个完整的URL卷曲,所以使用http://whatismyip.org/,而不是仅仅whatismyip.org - 尽管这似乎并没有被这一特定问题的原因。

+0

目前我的DNS服务器在'系统偏好设置>网络>高级> DNS'中查找时是'192.168.1.1'。 – Joshua 2012-01-03 12:31:20

+0

只是把它改成了Google的'8.8.8.8',它现在像一种魅力,非常感谢你! – Joshua 2012-01-03 12:31:41

1

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

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

如果我是正确的,你的DNS服务器的一个都没有响应。

+0

我现在看到您正在使用OSX,并且您指定了您自己的DNS设置。可能您的上游路由器(为您执行DNS查找)具有错误的DNS配置。 – jakobbg 2012-01-03 12:34:06

+0

实际上'192.168.1.1'是默认的,但就像你说的那样,它的响应速度不够快。正如DaveRandom所说,将它改为“8.8.8.8”似乎解决了这个问题。 +1 – Joshua 2012-01-03 12:35:55

+0

太好了。如果您的默认DNS服务器(192.168.1.1)需要超过10秒的时间来回复,那么出现问题或进一步“上游”:-)。 – jakobbg 2012-01-03 12:47:23

6
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); 

为我解决了这个问题。 IPV6有一个隐晦的错误。

+0

这在OSX上的本地Ubuntu流浪盒上适用于我。我不知道为什么。你怎么确定这是一个IPV6问题? – jfountain 2015-04-30 14:32:44

+0

我收到一个DNS错误,然后我试图改变一些参数。 – 2015-05-11 09:48:15

+0

在我共同的PHP托管服务上工作。这让我疯狂! – 2015-06-22 20:52:48