2010-02-09 66 views
7

我使用PHP(和cURL)創建了一個簡單的網絡爬蟲。它解析60,000個html頁面並檢索產品信息(它是Intranet上的工具)。如何限制cURL使用的併發連接

我主要關心的是併發連接。我想限制連接數量,所以無論發生什麼事情,爬蟲都不會使用超過15個併發連接。

服務器在IP達到25個併發連接的限制時阻塞IP,由於某種原因,我無法在服務器端更改它,所以我必須找到一種方法讓我的腳本永遠不會使用更多比X併發連接。

這可能嗎?

或者我應該用另一種語言重寫整個事物?

謝謝,任何幫助表示讚賞!

回答

5

那麼你可以使用curl_set_opt(CURLOPT_MAXCONNECTS, 15);來限制連接數。但是,如果這不適合你,你可能還想做一個簡單的連接管理器。

+1

我不知道我是否應該感到放鬆,或徹頭徹尾的愚蠢!我不知道這個選項,但我仍然發誓我不止一次閱讀所有cURL文檔!沒關係,我會發布我的結果。多謝了朋友! – josephdotca 2010-02-09 21:53:27

0

也許寫一個簡單的連接表:

target_IP   | active_connections 

1.2.3.4     10 
4.5.6.7     5 

每個捲曲通話將增加連接的數量,每個接近減少它。

您可以將該表存儲在mySQL表中,或者將該表存儲在速度爲Memcache

當您遇到已擁有最大連接數的IP時,您必須實施「稍後嘗試」隊列。