Php/docs/yar-concurrent-client.loop
Yar_Concurrent_Client::loop
(PECL yar >= 1.0.0)
Yar_Concurrent_Client::loop — 发送所有注册的并行调用
说明
public static Yar_Concurrent_Client::loop
([ callable $callback
[, callable $error_callback
]] ) : boolean
发送所有的已经通过 Yar_Concurrent_Client::call()注册的并行调用, 并且等待返回.
参数
callback
如果这个回掉函数被设置, 那么Yar在发送出所有的请求之后立即调用一次这个回掉函数(此时还没有任何请求返回), 调用的时候$callinfo参数是NULL.
如果在注册并行调用的时候制定了callback, 那么那个callback有更高的优先级.
error_callback
错误回掉函数, 如果设置了, 那么Yar在出错的时候会调用这个回掉函数.
返回值
范例
Example #1 Yar_Concurrent_Client::loop() example
<?phpfunction callback($retval, $callinfo) { if ($callinfo == NULL) { echo "现在, 所有的请求都发出去了, 还没有任何请求返回\n"; } else { echo "这是一个远程调用的返回, 调用的服务名是", $callinfo["method"], ". 调用的sequence是 " , $callinfo["sequence"] , "\n"; var_dump($retval); }} function error_callback($type, $error, $callinfo) { error_log($error);}Yar_Concurrent_Client::call("http://host/api/%22, "some_method", array("parameters"), "callback");Yar_Concurrent_Client::call("http://host/api/%22, "some_method", array("parameters")); // if the callback is not specificed, // callback in loop will be usedYar_Concurrent_Client::call("http://host/api/%22, "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json")); //this server accept json packagerYar_Concurrent_Client::call("http://host/api/%22, "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_TIMEOUT=>1)); //custom timeout Yar_Concurrent_Client::loop("callback", "error_callback"); //send the requests, //the error_callback is optional?>
以上例程的输出类似于:
现在, 所有的请求都发出去了, 还没有任何请求返回 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 4 string(11) "some_method" 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 1 string(11) "some_method" 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 2 string(11) "some_method" 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 3 string(11) "some_method"
参见
- Yar_Concurrent_Client::call() - 注册一个并行的服务调用
- Yar_Server::__construct() - 创建一个HTTP RPC Server
- Yar_Server::handle() - 启动HTTP RPC Server