将CURL多个请求发送到同一服务器,速度与单个请求一样慢

时间:2012-06-25 12:42:42

标签: php multiple-domains curl-multi

我正在使用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的列表时,不会发生此问题。我只是获取站点的标头数据,所以它不应该那么慢。

如果有人可以帮助我或者给我详细解释为什么会发生这种情况,并指出如何克服这个问题,我将非常感激。

1 个答案:

答案 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支持。