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.
(PHP 5, PHP 7, PHP 8)
curl_multi_info_read — Возвращает информацию о текущих операциях
Опрашивает набор дескрипторов о наличии сообщений или информации от индивидуальных передач. Сообщения могут включать такую информацию как код ошибки передачи или просто факт завершения передачи.
Повторяющиеся вызовы этой функции будут каждый раз возвращать
новый результат, пока не будет возвращено 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_RETURNTRANSFER, 1);
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)
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.