2024 年 PHP Conference Japan

Yar_Concurrent_Client::loop

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::loop發送所有呼叫

說明

public static Yar_Concurrent_Client::loop(callable $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"

另請參閱

新增筆記

使用者貢獻的筆記

此頁面尚無使用者貢獻的筆記。
To Top