ScotlandPHP

curl_multi_info_read

(PHP 5, PHP 7)

curl_multi_info_read現在の転送についての情報を表示する

説明

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_* のいずれか。すべて OK なら CURLE_OK が返ります。
handle curl が扱うハンドルの型を表すリソース。

例1 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_RETURNTRANSFER1);
    
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 が追加されました。

参考

add a note add a note

User Contributed Notes 1 note

up
1
Nick Smith
7 years ago
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.
To Top