curl_multi_info_read()

1. 定义

该函数获取当前解析的curl的相关传输信息的关联数组。

注:

  • 重复调用该函数时,每次都将返回新的结果,直到没有更多的信息可返回时,将返回FALSE。
  • 传输信息中可能包含错误码或者传输线程是否完成的提示。

2. 语法

curl_multi_info_read ( resource $mh [, int &$msgs_in_queue = NULL ] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$mh 必需 资源类型 通过函数curl_multi_init()打开的curl资源句柄
&$msgs_in_queue 可选 整型 当前函数调用后剩余的消息数

4. 示例

<?php

// curl_multi_info_read()
// 获取当前解析的curl的相关传输信息的关联数组

$urls = [
    'http://loripsum.net/api/5/short/headers',
    'http://loripsum.net/api/2/short/a/b/i'
];
$mh = curl_multi_init();
foreach ($urls as $key => $value) {
    $ch[$key] = curl_init();
    curl_setopt($ch[$key], CURLOPT_URL, $value);
    curl_multi_add_handle($mh, $ch[$key]);
}

// 批处理
do {
    $status = curl_multi_exec($mh, $running);// 逐个处理执行句柄:输出返回结果
    $info = curl_multi_info_read($mh);// 获取传输信息
    if($info) {
        var_dump($info);
        /* 类似输出:
        array(3) {
          ["msg"]=>
          int(1)
          ["result"]=>
          int(0)
          ["handle"]=>
          resource(6) of type (curl)
        }
        */
    }
    curl_multi_select($mh);
} while ($status == CURLM_CALL_MULTI_PERFORM || $running);

// 移除批处理中的所有传输会话
foreach ($ch as $key => $value) {
    curl_multi_remove_handle($mh, $value);
}

// 关闭所有句柄
curl_multi_close($mh);

5. 延展阅读