2012-01-03 36 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