English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Основы

PHP Уровень продвинутых знаний

PHP & MySQL

PHP Референс Мануал

Пример использования и примеры с PHP curl_multi_info_read()

PHP CURL справочник

(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, возвращаемые curl_multi_init().

msgs_in_queue

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

Возвратное значение

При успешном выполнении возвращается массив с相关信息, при ошибке возвращается FALSE.

Возвратное значение содержимого (содержимое возвращаемого массива) :

КлючЗначение
msgCURLMSG_DONEКонстанта. Другие значения возвращает текущий статус.
resultCURLE_*Одна из констант. Если все операции прошли успешно, будет возвращено:CURLE_OKКонстанта.
handleТип ресурса CURL указывает на соответствующий хендлер.

Онлайн пример

<?php
$urls = array(
   "http://www.baidu.com/"
   "http://www.google.com.hk/",
   "http://ru.oldtoolbag.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) типа (curl)
}
array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(7) типа (curl)
}
array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(6) типа (curl)
}
bool(false)

Журнал обновлений

ВерсияОписание
5.2.0msgs_in_queueбыл добавлен.

PHP CURL справочник