2010-02-09 69 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时,您必须实施“稍后尝试”队列。