有没有办法检测curl_multi_exec循环中完成的请求数量?

时间:2013-05-12 09:18:33

标签: php loops curl

使用curl_multi_*,我想每x个请求执行一段代码,有没有办法这样做?

我想出的唯一方法是检查来自$still_running的{​​{1}}变量,不幸的是,它不起作用(它不一致,有时它会从7跳到1而不经过6, 5等。)

这是我提出的代码(它并不总是有效,正如我所说curl_multi_exec不一致):

$still_running

1 个答案:

答案 0 :(得分:0)

首先,curl_multi_exec()并行驱动N次传输,并且每次调用它都会进一步驱动它们。 $ still_running计数器是curl_multi_exec()返回时仍在进行的传输数量。它可能需要数百(或更多)调用来完成转移 - 或更多转移。

如果您想在转移完成时采取行动,那么您可以看到$ still_running在完成后如何扣除,或者您可以使用curl_multi_info_read()来确切了解每次转移的时间。< / p>

最后:你的代码示例需要注意!!由于缺少对curl_multi_select()的调用,这个程序将像疯了一样繁忙循环并花费100%的CPU时间直到所有传输都完成。这不是一件好事。