0

我正在使用一个很好的 Multi CURL 界面,称为 Rolling CURL

http://code.google.com/p/rolling-curl/issues/detail?id=20

它工作正常,例如它在大约 3 秒内从 20 个站点获取数据。问题是我需要它在同一服务器上的 200 - 300 个站点上工作。这与在循环中发出单个 CURL 请求所需的时间大致相同,大约为 10 分 47 秒。所以我有点不知道该怎么做。我需要做的就是获取每个站点上的 HTTP 代码。我试过 file_get_contents,PHP FTP 函数,它们要慢得多。

另一件事是,当我浏览同一服务器上的 12 个以上域的列表时,它似乎阻止了请求,所以我根本没有在任何站点上获取任何数据。当我运行少于 12 个的列表时,不会出现此问题。我只获取站点的标题数据,因此它不应该那么慢。

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

4

1 回答 1

0

听起来图书馆正在限制每个服务器的并发请求。看看你是否可以配置它。例如,这是在源代码中,也是说明原因:

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

于 2012-06-25T12:52:00.540 回答