[英]php curl_multi_exec current executing curl name
有没有办法找出这个函数中的curl_multi_exec
正在执行哪个curl ... php.net
上或多或少提供了什么?
<?php
...
$mh = curl_multi_init();
//add the five handles
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
curl_multi_add_handle($mh,$ch3);
curl_multi_add_handle($mh,$ch4);
curl_multi_add_handle($mh,$ch5);
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($mh) == -1) {
usleep(1);
}
do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
...
?>
所有请求均从第一个curl_multi_exec
开始,然后异步运行。
随后在发布的代码中调用curl_multi_exec
的目的是定期检查是否仍有请求在进行中(通过将引用返回的值读入$active
)。
还检查返回到$mrc
的值,通常是CURLM_CALL_MULTI_PERFORM
(仍在运行多卷曲)或CURLM_OK
(已完成多卷曲- $active
应该为FALSE
)。 参见http://php.net/manual/en/curl.constants.php并搜索以CURLM_
开头的文本,以查看与curl multi相关的所有常量。
说你的问题没有答案。 所有请求并行运行,然后在它们满足时结束,或者发生错误。 完成所有请求后, curl_multi_exec
返回的值使循环退出并允许脚本执行继续。
但是请注意,您可以调用curl_multi_info_read来收集有关当前传输的信息。 在撰写本文时,您可能知道哪些请求已完成(并且排除了哪些仍在运行);
从手册:
询问多功能手柄,是否有来自单个传输的消息或信息。 消息可能包含信息,例如来自传输的错误代码,或者仅包含传输已完成的事实。
重复调用此函数每次都会返回一个新结果,直到返回FALSE作为信号,表明此时没有更多可用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.