php curl_multi_exec问题

liangfeng0828
  • 135
$active  =  null ;
 // 执行批处理句柄
 do {
     $mrc  =  curl_multi_exec ( $mh ,  $active );
} while ( $mrc  ==  CURLM_CALL_MULTI_PERFORM );

while ( $active  &&  $mrc  ==  CURLM_OK ) {
    if ( curl_multi_select ( $mh ) != - 1 ) {
        do {
             $mrc  =  curl_multi_exec ( $mh ,  $active );
        } while ( $mrc  ==  CURLM_CALL_MULTI_PERFORM );
    }
}

请教一下 $active、CURLM_CALL_MULTI_PERFORM、CURLM_OK分别表示什么,它们有什么区别呢?

回复
阅读 64
1 个回答
$active

一个是否仍在执行的标识的引用。

CURLM_CALL_MULTI_PERFORM

定义的常量,值为 -1, 意思是还未处理完成。

 This is not really an error. It means you should call {@see curl_multi_exec()} again without doing select() or similar in between.
 Before version 7.20.0 this could be returned by {@see curl_multi_exec()}, but in later versions this return code is never used.
 @link https://www.php.net/manual/en/function.curl-multi-exec.php
 @link https://curl.haxx.se/libcurl/c/libcurl-errors.html
define ('CURLM_CALL_MULTI_PERFORM', -1);
CURLM_OK

定义的常量,值为 0,意思是正常返回

 Things are fine.
 @link https://www.php.net/manual/en/function.curl-multi-exec.php
 @link https://curl.haxx.se/libcurl/c/libcurl-errors.html

define ('CURLM_OK', 0);

可以参考一下PHP官方的中文文档

curl_multi_exec ( resource $mh , int &$still_running ) : int
处理在栈中的每一个句柄。无论该句柄需要读取或写入数据都可调用此方法。

参数
multi_handle
由 curl_multi_init() 返回的 cURL 多个句柄。

still_running
一个用来判断操作是否仍在执行的标识的引用。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏