MultiCurl需要大的超时才能从许多URL获取数据

时间:2017-10-24 13:03:46

标签: php curl

我使用这个多卷曲包装:https://github.com/php-curl-class/php-curl-class/

我正在遍历~160个URL并从中获取XML数据。我意识到卷曲请求是并行完成的。奇怪的是,如果我把小超时(例如,10秒)超过一半的URL无法处理:我收到错误回调,错误消息为def check_exists_by_xpath(xpath,driver): try: driver.find_element_by_xpath(xpath) except: #All exceptions are handeled here return False return True

但是,如果我将超时设置为100秒,则几乎所有URL都会得到正确处理。

但我无法理解为什么会这样。如果我使用单个Curl实例并从我得到响应的任何URL中获取数据非常快,那么从单个URL获取数据不需要100秒。

因此,多卷曲的目的是并行执行请求。每个请求都有自己的超时。然后,如果超时设置为小值(10-20-30秒),那么为什么结果不够呢?

稍后我会有~600个URL,这意味着超时可能应该增加到400-500秒,这很奇怪。我也可以创建一个Curl实例并逐个执行具有几乎相同结果的请求

1 个答案:

答案 0 :(得分:0)

  

卷曲 PHP 无法同步请求

而不是以 JavaScript 的方式使用获取,您获得第二名......有机会使用承诺完成工作。然而,要将这个原生函数添加到带curl的php中,你可以在这里讨论一些方法Async curl request in PHPPHP Curl async response