(PECL yar >= 1.0.0)
Yar_Concurrent_Client::loop — 發送所有呼叫
$callback
= ?, callable $error_callback
= ?): bool發送所有已註冊的遠端 RPC 呼叫。
callback
如果設定了此回呼函式,則 Yar 會在所有呼叫發送後,且在任何回應返回之前,以 $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")); // 如果未指定回呼函式,
// 將使用迴圈中的回呼函式
Yar_Concurrent_Client::call("http://host/api/", "some_method", array("parameters"), "callback", NULL, array(YAR_OPT_PACKAGER => "json"));
//此伺服器接受 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 是可選的
?>
以上範例將輸出類似以下的內容
Now, all requests are sent, and no any response available This is a remote call response, the method name issome_method. calling sequence is 4 string(11) "some_method" This is a remote call response, the method name issome_method. calling sequence is 1 string(11) "some_method" This is a remote call response, the method name issome_method. calling sequence is 2 string(11) "some_method" This is a remote call response, the method name issome_method. calling sequence is 3 string(11) "some_method"