loop是在所有的request请求都返回之后,才执行下一条吧?
而不是发出request之后立刻返回吧?
谢谢
(PECL yar >= 1.0.0)
Yar_Concurrent_Client::loop — Запуск всех зарегистрированный вызовов
$callback
= ?, callable $error_callback
= ?): boolЗапускает все зарегистрированные вызовы.
callback
Если задана функция обратного вызова, то она будет запущена после запуска всех запросов но до получения ответов от них с параметром $callinfo равным NULL.
Далее, если функция обратного вызова не была задана при регистрации вызова, то для обработки результата будет вызвана эта функция.
error_callback
Если этот параметр задан, то Yar запустит эту функцию в случае возникновения ошибки.
Пример #1 Пример использования Yar_Concurrent_Client::loop()
<?php
function callback($retval, $callinfo) {
if ($callinfo == NULL) {
echo "Так, все запросы запущены, но пока ни одного ответа\n";
} else {
echo "Это ответ от удалённого запроса. Имя метода", $callinfo["method"],
". Был зарегистрирован " , $callinfo["sequence"] , "\n";
var_dump($retval);
}
}
function error_callback($type, $error, $callinfo) {
error_log($error);
}
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback");
//если функция обратного вызова не задана, то будет использована определённая в цикле вызовов
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"));
//этот сервер принимает упаковку JSON
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
//отдельно заданное время ожидания
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1));
Yar_Concurrent_Client::loop("callback", "error_callback"); //запускаем запросы,
//параметр error_callback не обязателен
?>
Вывод приведённого примера будет похож на:
Так, все запросы запущены, но пока ни одного ответа Это ответ от удалённого запроса. Имя метода issome_method. Был зарегистрирован 4 string(11) "some_method" Это ответ от удалённого запроса. Имя метода issome_method. Был зарегистрирован 1 string(11) "some_method" Это ответ от удалённого запроса. Имя метода issome_method. Был зарегистрирован 2 string(11) "some_method" Это ответ от удалённого запроса. Имя метода issome_method. Был зарегистрирован 3 string(11) "some_method"