• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • curl_multi_info_read()

    (PHP 5, PHP 7)

    获取当前解析的cURL的相关传输信息

    说明

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

    查询批处理句柄是否单独的传输线程中有消息或信息返回。消息可能包含诸如从单独的传输线程返回的错误码或者只是传输线程有没有完成之类的报告。

    重复调用这个函数,它每次都会返回一个新的结果,直到这时没有更多信息返回时,FALSE被当作一个信号返回。通过$msgs_in_queue返回的整数指出将会包含当这次函数被调用后,还剩余的消息数。

    Warning

    返回的资源指向的数据调用curl_multi_remove_handle()后将不会存在。

    参数

    $mh

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

    $msgs_in_queue

    仍在队列中的消息数量。

    返回值

    成功时返回相关信息的数组,失败时返回FALSE

    返回数组的内容
    Key:Value:
    msgCURLMSG_DONE常量。其他返回值当前不可用。
    resultCURLE_*常量之一。如果一切操作没有问题,将会返回CURLE_OK常量。
    handlecURL资源类型表明它有关的句柄。

    范例

    一个curl_multi_info_read()范例

    <?php
    $urls = array(
       "http://www.cnn.com/",
       "http://www.bbc.co.uk/",
       "http://www.yahoo.com/"
    );
    $mh = curl_multi_init();
    foreach ($urls as $i => $url) {
        $conn[$i] = curl_init($url);
        curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
        curl_multi_add_handle($mh, $conn[$i]);
    }
    do {
        $status = curl_multi_exec($mh, $active);
        $info = curl_multi_info_read($mh);
        if (false !== $info) {
            var_dump($info);
        }
    } while ($status === CURLM_CALL_MULTI_PERFORM || $active);
    foreach ($urls as $i => $url) {
        $res[$i] = curl_multi_getcontent($conn[$i]);
        curl_close($conn[$i]);
    }
    var_dump(curl_multi_info_read($mh));
    ?>
    

    以上例程的输出类似于:

    array(3) {
      ["msg"]=>
      int(1)
      ["result"]=>
      int(0)
      ["handle"]=>
      resource(5) of type (curl)
    }
    array(3) {
      ["msg"]=>
      int(1)
      ["result"]=>
      int(0)
      ["handle"]=>
      resource(7) of type (curl)
    }
    array(3) {
      ["msg"]=>
      int(1)
      ["result"]=>
      int(0)
      ["handle"]=>
      resource(6) of type (curl)
    }
    bool(false)
    

    更新日志

    版本说明
    5.2.0$msgs_in_queue被加入。

    参见

    Just to let others who might be struggling to get it to work, curl_multi_info_read() doesn't work in PHP versions before 5.2.0, and instead returns NULL immediately.