Php 使对同一服务器的多个请求与单个请求一样慢

Php 使对同一服务器的多个请求与单个请求一样慢,php,multiple-domains,curl-multi,Php,Multiple Domains,Curl Multi,我正在使用 它工作正常,例如,它在大约3秒钟内从20个站点获取数据。问题是我需要它在同一台服务器上的200-300个站点上工作。这与在循环中发出单个CURL请求所需的时间大致相同,大约为10分47秒。所以我有点不知所措,不知道该怎么办。我所需要做的就是抓取每个站点上的HTTP代码。我尝试过文件获取内容、PHP FTP函数,它们的速度要慢得多 另一件事是,当我在同一台服务器上运行12+个域的列表时,它似乎阻止了请求,所以我根本无法在任何站点上获取任何数据。当我运行少于12个的列表时,不会出现此问

我正在使用

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

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


如果有人能帮助我,或者给我一个详细的解释,告诉我为什么会发生这种情况,告诉我如何克服这个问题,我将非常感激

这听起来像是库在限制每台服务器的并发请求。看看你是否可以配置它。例如,这在描述中,以及为什么:

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支持这一点。

您是否已将主机记录添加到服务器以防止DNS查找?@hakre我使用了cUrl无正文技巧并在循环中运行它,对于295个域来说速度太慢了,花费的时间是10分57秒。295个请求大约11秒对我来说并不慢。@petah我不是服务器维护和维护专家,所以你必须为我把它分解一下。