我使用PHP(和cURL)創建了一個簡單的網絡爬蟲。它解析60,000個html頁面並檢索產品信息(它是Intranet上的工具)。如何限制cURL使用的併發連接
我主要關心的是併發連接。我想限制連接數量,所以無論發生什麼事情,爬蟲都不會使用超過15個併發連接。
服務器在IP達到25個併發連接的限制時阻塞IP,由於某種原因,我無法在服務器端更改它,所以我必須找到一種方法讓我的腳本永遠不會使用更多比X併發連接。
這可能嗎?
或者我應該用另一種語言重寫整個事物?
謝謝,任何幫助表示讚賞!
我使用PHP(和cURL)創建了一個簡單的網絡爬蟲。它解析60,000個html頁面並檢索產品信息(它是Intranet上的工具)。如何限制cURL使用的併發連接
我主要關心的是併發連接。我想限制連接數量,所以無論發生什麼事情,爬蟲都不會使用超過15個併發連接。
服務器在IP達到25個併發連接的限制時阻塞IP,由於某種原因,我無法在服務器端更改它,所以我必須找到一種方法讓我的腳本永遠不會使用更多比X併發連接。
這可能嗎?
或者我應該用另一種語言重寫整個事物?
謝謝,任何幫助表示讚賞!
那麼你可以使用curl_set_opt(CURLOPT_MAXCONNECTS, 15);
來限制連接數。但是,如果這不適合你,你可能還想做一個簡單的連接管理器。
也許寫一個簡單的連接表:
target_IP | active_connections
1.2.3.4 10
4.5.6.7 5
每個捲曲通話將增加連接的數量,每個接近減少它。
您可以將該表存儲在mySQL表中,或者將該表存儲在速度爲Memcache。
當您遇到已擁有最大連接數的IP時,您必須實施「稍後嘗試」隊列。
我對another question的回答有一些用curl_multi_ *做這個的代碼。
我不知道我是否應該感到放鬆,或徹頭徹尾的愚蠢!我不知道這個選項,但我仍然發誓我不止一次閱讀所有cURL文檔!沒關係,我會發布我的結果。多謝了朋友! – josephdotca 2010-02-09 21:53:27