Dutch PHP Conference 2021 - Call for Papers

curl_multi_info_read

(PHP 5, PHP 7, PHP 8)

curl_multi_info_readВозвращает информацию о текущих операциях

Описание

curl_multi_info_read ( CurlMultiHandle $multi_handle , int &$queued_messages = null ) : array|false

Опрашивает набор дескрипторов о наличии сообщений или информации от индивидуальных передач. Сообщения могут включать такую информацию как код ошибки передачи или просто факт завершения передачи.

Повторяющиеся вызовы этой функции будут каждый раз возвращать новый результат, пока не будет возвращено false в качестве сигнала окончания сообщений. Целое число, содержащееся в queued_messages, указывает количество оставшихся сообщений после вызова данной функции.

Внимание

Данные, на которые указывает возвращаемый ресурс, будут затёрты вызовом curl_multi_remove_handle().

Список параметров

multi_handle

Мультидескриптор cURL, полученный из curl_multi_init().

queued_messages

Количество оставшихся сообщений в очереди

Возвращаемые значения

В случае успешного выполнения возвращает ассоциативный массив сообщений или false в случае возникновения ошибки.

Содержимое возвращаемого массива
Ключ: Значение:
msg Константа CURLMSG_DONE. Остальные возвращаемые значения пока недоступны.
result Одна из констант CURLE_*. Если всё хорошо, результатом будет константа CURLE_OK.
handle Ресурс типа curl, указывающий на дескриптор, к которому он относится.

Список изменений

Версия Описание
8.0.0 multi_handle теперь ожидает экземпляр; раньше, ожидался ресурс (resource).

Примеры

Пример #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);
    if (
$active) {
        
curl_multi_select($mh);
    }
    while (
false !== ($info curl_multi_info_read($mh))) {
        
var_dump($info);
    }
} while (
$active && $status == CURLM_OK);

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)

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
0
Nick Smith
10 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