如何限制cURL使用的并发连接数

7

我使用PHP(和cURL)制作了一个简单的网络爬虫,它解析大约60,000个html页面并检索产品信息(这是一个内部网站上的工具)。

我的主要关注点是并发连接。我想限制连接数,以便无论发生什么情况,爬虫都不会使用超过15个并发连接。

每当IP达到25个并发连接的限制时,服务器将阻止该IP,并出于某种原因,我无法在服务器端更改它,所以我必须找到一种方法让我的脚本永远不会使用超过X个并发连接。

这可能吗?

还是我应该用另一种语言重新编写整个东西?

谢谢,感激任何帮助!

2个回答

5

您可以使用curl_set_opt(CURLOPT_MAXCONNECTS, 15);来限制连接数量。但如果这不能满足您的需求,您可能还需要创建一个简单的连接管理器。


1
我不知道自己是应该感到宽慰还是感到非常愚蠢!我不知道这个选项,但我发誓我读过所有的cURL文档...不止一次!算了,我会发布我的结果。非常感谢你,我的朋友! - josephdotca

0

或许可以编写一个简单的连接表:

target_IP           |   active_connections

1.2.3.4                 10
4.5.6.7                 5

每个curL调用都会增加连接数,每个close则会减少连接数。

您可以将表存储在MySQL表中,或者使用Memcache以提高速度。

当您遇到已达到最大连接数的IP时,您需要实现一个“稍后再试”的队列。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接