2011-06-02 63 views
3

在我的一個腳本中,我設置了curl超時CURLOPT_CONNECTTIMEOUT_MS,時間爲3000毫秒,但捲曲超時的時間比平均1000毫秒多得多。爲什麼它會這麼早就超時?當我將超時設置爲3000ms時,爲什麼CURL會在1000毫秒內超時?

+0

你確定它的實際連接超時,而不是操作(即CURLOPT_TIMEOUT_MS,而不是CURLOPT_CONNECTTIMEOUT_MS?) – 2011-06-02 09:20:44

+0

matt,我記錄所有失敗的CURL調用,這裏是一個日誌條目'Curl error:操作超時後1000個毫秒,接收0個字節,這裏是代碼'curl_setopt($ ch,CURLOPT_CONNECTTIMEOUT_MS,3000); curl_setopt($ ch,CURLOPT_CONNECTTIMEOUT,3); ',即使'CURLOPT_CONNECTTIMEOUT_MS'不被尊重'CURLOPT_CONNECTTIMEOUT'應該被遵守。 – Kumar 2011-06-02 09:31:31

+1

是的,但我所要求的是CURLOPT_TIMEOUT/CURLOPT_TIMEOUT_MS,而不是CURLOPT_CONNECTTIMEOUT/CURLOPT_CONNECTTIMEOUT_MS。也就是說,實際的*操作*超時,而不僅僅是連接超時。一對控制* connection *超時,這是您設置的,另一對控制* operation *超時,即連接後實際獲取數據的超時。 – 2011-06-02 09:34:53

回答

5

我相信你看到的超時是CURL操作超時,而不是連接超時。這兩個是不同的。

CURLOPT_TIMEOUT(和CURLOPT_TIMEOUT_MS對於毫秒值)控制CURL在連接後執行的工作超時。 CUROPT_CONNECTTIMEOUT(和CUROPT_CONNECTTIMEOUT_MS)控制初始連接超時(DNS查找,建立連接等)

如果我是正確的,那麼如果你設置CURLOPT_TIMEOUT大於1,你會發現,你的超時沒有按」再次以1000ms行程。

+0

馬特吉布森,你救了一天:) – Kumar 2011-06-02 09:55:35

相關問題