Get information about the current transfers

curl_multi_getcontent
curl_multi_init
cURL Functions
PHP Manual

# curl_multi_info_read

(PHP 5, PHP 7)

curl_multi_info_read — Get information about the current transfers

### Description

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

Ask the multi handle if there are any messages or information from the individual transfers. Messages may include information such as an error code from the transfer or just the fact that a transfer is completed.

Repeated calls to this function will return a new result each time, until a `FALSE` is returned as a signal that there is no more to get at this point. The integer pointed to with `msgs_in_queue` will contain the number of remaining messages after this function was called.

Warning

The data the returned resource points to will not survive calling curl_multi_remove_handle().

### Parameters

`mh`

  A cURL multi handle returned by curl_multi_init().

`msgs_in_queue`

  Number of messages that are still in the queue

### Return Values

On success, returns an associative array for the message, `FALSE` on failure.

Contents of the returned array
Key: | Value:
--- | ---
msg | The `CURLMSG_DONE` constant. Other return values are currently not available.
result | One of the `CURLE_*` constants. If everything is OK, the `CURLE_OK` will be the result.
handle | Resource of type curl indicates the handle which it concerns.

### Examples

Example #1 A curl_multi_info_read() example

`<?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));
?>`

The above example will output something similar to:

    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)

### Changelog

Version | Description
--- | ---
5.2.0 | `msgs_in_queue` was added.

### See Also

- curl_multi_init() - Returns a new cURL multi handle

curl_multi_getcontent
curl_multi_init
cURL Functions
PHP Manual