我正在使用a good Multi CURL interface called Rolling CURL
http://code.google.com/p/rolling-curl/issues/detail?id=20
它工作正常,例如它在大约3秒内从20个站点获取数据。问题是我需要它在SAME服务器上的200-300个站点上工作。这大约需要花费大约相同的时间来在一个大约10分47秒的循环中发出单个CURL请求。所以我有点难过该做什么。我需要做的就是在每个站点上获取HTTP代码。我已经尝试过file_get_contents,PHP FTP功能,它们要慢得多。
另一件事是,当我浏览同一服务器上的12 +域列表时,它似乎阻止了请求,因此我根本不会在任何站点上获得任何数据。当我运行小于12的列表时,不会发生此问题。我只是获取站点的标头数据,所以它不应该那么慢。
如果有人可以帮助我或者给我详细解释为什么会发生这种情况,并指出如何克服这个问题,我将非常感激。
答案 0 :(得分:0)
听起来这个库会限制每台服务器的并发请求。看看你是否可以配置它。例如。这是source-code以及原因:
class RollingCurl {
/**
* @var int
*
* Window size is the max number of simultaneous connections allowed.
*
* REMEMBER TO RESPECT THE SERVERS:
* Sending too many requests at one time can easily be perceived
* as a DOS attack. Increase this window_size if you are making requests
* to multiple servers or have permission from the receving server admins.
*/
private $window_size = 5;
这也许对你很有意思:
要获取状态代码,通常只需要HEAD请求,cUrl支持。