Latest web development tutorials

PHP curl_multi_info_read函數

PHP curl_multi_info_read函數

PHP Calendar 參考手冊 PHP cURL參考手冊

(PHP 5)

curl_multi_info_read — 獲取當前解析的cURL的相關傳輸信息


說明

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

查詢批處理句柄是否單獨的傳輸線程中有消息或信息返回。 消息可能包含諸如從單獨的傳輸線程返回的錯誤碼或者只是傳輸線程有沒有完成之類的報告。

重複調用這個函數,它每次都會返回一個新的結果,直到這時沒有更多信息返回時,FALSE 被當作一個信號返回。 通過msgs_in_queue返回的整數指出將會包含當這次函數被調用後,還剩餘的消息數。

注意:返回的資源指向的數據調用curl_multi_remove_handle()後將不會存在。


參數

mh

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

msgs_in_queue

仍在隊列中的消息數量。


返回值

成功時返回相關信息的數組,失敗時返回FALSE。

返回值內容(返回數組的內容) :

msg CURLMSG_DONE常量。 其他返回值當前不可用。
result CURLE_*常量之一。 如果一切操作沒有問題,將會返回CURLE_OK常量。
handle cURL資源類型表明它有關的句柄。

實例

<?php

$urls = array(
   "http://www.baidu.com/",
   "http://www.google.com.hk/",
   "http://www.w3cschool.cc/"
);

$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被加入。

PHP Calendar 參考手冊 PHP cURL參考手冊