7

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

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

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

这可能吗?

或者也许我应该用另一种语言重写整个事情?

谢谢,任何帮助表示赞赏!

4

2 回答 2

5

好吧,您可以使用它curl_set_opt(CURLOPT_MAXCONNECTS, 15);来限制连接数。但是,如果这不适合您,您可能还想制作一个简单的连接管理器。

于 2010-02-09T21:38:16.910 回答
0

也许写一个简单的连接表:

target_IP           |   active_connections

1.2.3.4                 10
4.5.6.7                 5

每次 curL 调用都会增加连接数,每次关闭都会减少连接数。

您可以将表存储在 mySQL 表或Memcache中以提高速度。

当你遇到一个 IP 已经有它的最大连接数时,你将不得不实现一个“稍后尝试”队列。

于 2010-02-09T21:45:49.240 回答