(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"