(PECL yar >= 1.0.0)
Yar_Concurrent_Client::loop — 發(fā)送所有注冊的并行調(diào)用
$callback
= ?, callable $error_callback
= ?): boolean發(fā)送所有的已經(jīng)通過 Yar_Concurrent_Client::call()注冊的并行調(diào)用, 并且等待返回.
callback
如果這個(gè)回掉函數(shù)被設(shè)置, 那么Yar在發(fā)送出所有的請求之后立即調(diào)用一次這個(gè)回掉函數(shù)(此時(shí)還沒有任何請求返回), 調(diào)用的時(shí)候$callinfo參數(shù)是NULL.
如果在注冊并行調(diào)用的時(shí)候制定了callback, 那么那個(gè)callback有更高的優(yōu)先級.
error_callback
錯(cuò)誤回掉函數(shù), 如果設(shè)置了, 那么Yar在出錯(cuò)的時(shí)候會(huì)調(diào)用這個(gè)回掉函數(shù).
示例 #1 Yar_Concurrent_Client::loop() example
<?php
function callback($retval, $callinfo) {
if ($callinfo == NULL) {
echo "現(xiàn)在, 所有的請求都發(fā)出去了, 還沒有任何請求返回\n";
} else {
echo "這是一個(gè)遠(yuǎn)程調(diào)用的返回, 調(diào)用的服務(wù)名是", $callinfo["method"],
". 調(diào)用的sequence是 " , $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")); // if the callback is not specificed,
// callback in loop will be used
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
//this server accept json packager
Yar_Concurrent_Client::call("http://host/api/", "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
?>
以上例程的輸出類似于:
現(xiàn)在, 所有的請求都發(fā)出去了, 還沒有任何請求返回 這是一個(gè)遠(yuǎn)程調(diào)用的返回, 調(diào)用的服務(wù)名是some_method, 調(diào)用的sequence是 4 string(11) "some_method" 這是一個(gè)遠(yuǎn)程調(diào)用的返回, 調(diào)用的服務(wù)名是some_method, 調(diào)用的sequence是 1 string(11) "some_method" 這是一個(gè)遠(yuǎn)程調(diào)用的返回, 調(diào)用的服務(wù)名是some_method, 調(diào)用的sequence是 2 string(11) "some_method" 這是一個(gè)遠(yuǎn)程調(diào)用的返回, 調(diào)用的服務(wù)名是some_method, 調(diào)用的sequence是 3 string(11) "some_method"