繁体   English   中英

PHP curl_multi_exec当前执行的curl名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM