問候大家捲曲超時和連接超時的最佳值
我正在研究一個小爬行引擎,並使用curl從各個網站請求頁面。問題是什麼建議我應該設置我的connection_timeout和超時值?我通常會抓取的東西是包含大量圖像和文本的頁面。
問候大家捲曲超時和連接超時的最佳值
我正在研究一個小爬行引擎,並使用curl從各個網站請求頁面。問題是什麼建議我應該設置我的connection_timeout和超時值?我通常會抓取的東西是包含大量圖像和文本的頁面。
cURL知道兩個不同的超時。
對於CURLOPT_CONNECTTIMEOUT
,無論網站包含多少文本或其引用的圖像有多少其他資源都不重要,因爲這是連接超時,甚至服務器在連接建立之前無法知道所請求頁面的大小。
對於CURLOPT_TIMEOUT
它確實很重要。即使是大頁面,也只需要少量數據包,但服務器可能需要更多時間來組合輸出。此外,重定向和其他事物(例如代理)的數量可能會顯着增加響應時間。
一般而言,超時的「最佳值」取決於您的網絡和服務器的要求和條件。這些條件是變化的主題。因此沒有「最佳價值」。
我推薦使用較短的超時時間,稍後重試失敗的下載。
Btw cURL不會自動下載響應中引用的資源。您必須手動進行此操作,然後再撥打curl_exec
(新鮮超時)。
我用
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,30); curl_setopt($ch, CURLOPT_TIMEOUT,60);
的最好的迴應是瑞克的一個。
我有一個代理檢查器,在我的基準測試中,我看到大多數工作代理需要不到10秒的時間才能連接。
因此,我使用ConnectionTimeOut和TimeOut的時間爲10秒,但在我的情況下,您必須決定要使用多少次,因此請從大值開始,使用curl_getinfo查看時間基準並減少值。
注意:連接超過5秒或10秒的代理對我來說沒用,所以我使用該值。
是的。如果您的目標是查詢另一個站點的代理,則這樣的級聯連接將需要相當長的時間來執行curl調用。
特別是當您遇到間歇性捲曲問題時,請首先檢查這些值。
如果將其設置得太高,那麼腳本將會很慢,因爲一個停止的URL將會花費您在CURLOPT_TIMEOUT中設置的所有時間來完成處理。如果您不使用代理服務器,那麼你可以只設置下列值
CURLOPT_TIMEOUT = 3 CURLOPT_CONNECTTIMEOUT = 1
然後你可以通過失敗的URL在以後的時間來仔細檢查他們。
你應該接受一些你的問題的答案與複選標記。 – zerkms 2011-01-12 03:31:36
如果你想抓取,你應該設置爲無超時,而不是一次性產生curl(順序),你應該分叉多個進程捲曲 – ajreal 2011-01-12 04:07:44