(Yar >= 1.0.0)
Yar_Concurrent_Client::loop — 发送并等待所有已注册的调用
$callback = null, ?callable $error_callback = null, ?array $options = null): ?bool并行发送所有通过 Yar_Concurrent_Client::call() 注册的调用, 并阻塞直到每一个响应都已到达并被处理完毕。 此方法返回时,调用列表会被清空。
当所有已注册的调用都已处理完毕,或者根本没有注册任何调用时,返回 true。
如果并发客户端已经在另一个 loop 中运行,则返回 false;
此时会产生一条警告。
示例 #1 Yar_Concurrent_Client::loop() 示例
<?php
function callback($retval, $callinfo) {
if ($callinfo == NULL) {
echo "Now, all requests are sent, and no response available\n";
} else {
echo "This is a remote call response, the method name is ", $callinfo["method"],
". calling sequence is ", $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");
/* 如果不指定回调, 将使用 loop() 的回调 */
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"));
Yar_Concurrent_Client::loop("callback", "error_callback");
?>以上示例的输出类似于:
Now, all requests are sent, and no response available This is a remote call response, the method name is some_method. calling sequence is 2 string(11) "some_method" This is a remote call response, the method name is some_method. calling sequence is 1 string(11) "some_method"