我使用PHP(和cURL)创建了一个简单的Web爬虫。它解析了6万个html页面并检索了产品信息(它是内部网上的工具)。
我主要担心的是并发连接。我想限制连接数,所以无论发生什么,爬虫永远不会使用超过15个并发连接。
每当达到IP的25个并发连接的限制时服务器阻止IP,并且出于某种原因,我无法在服务器端更改它,所以我必须找到一种方法来使我的脚本永远不会超过X并发连接。
这可能吗?
或许我应该用另一种语言重写整个事情?
谢谢,任何帮助表示赞赏!
答案 0 :(得分:5)
您可以使用curl_set_opt(CURLOPT_MAXCONNECTS, 15);
来限制连接数。但是你可能还想创建一个简单的连接管理器,如果它不适合你。
答案 1 :(得分:0)
也许写一个简单的连接表:
target_IP | active_connections
1.2.3.4 10
4.5.6.7 5
每次curL调用都会增加连接数,每次调整都会减少连接数。
您可以将表存储在mySQL表中,或者Memcache表示速度。
当您遇到已拥有最大连接数的IP时,您必须实施“稍后尝试”队列。
答案 2 :(得分:0)
我对another question的回答有一些使用curl_multi _ *执行此操作的代码。