Yar_Concurrent_Client::call

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::call注冊一個并行的服務(wù)調(diào)用

說明

public static Yar_Concurrent_Client::call(
    string $uri,
    string $method,
    array $parameters = ?,
    callable $callback = ?,
    callable $error_callback = ?,
    array $options = ?
): int

注冊一個并行的(異步的)遠程服務(wù)調(diào)用, 不過這個調(diào)用請求不會被立即發(fā)出, 而是會在接下來調(diào)用 Yar_Concurrent_Client::loop()的時候才真正的發(fā)送出去.

參數(shù)

uri

RPC 服務(wù)的 URI(http 或 tcp).

method

調(diào)用的服務(wù)名字(也就是服務(wù)方法名).

parameters

調(diào)用的參數(shù).

callback

回調(diào)函數(shù), 在遠程服務(wù)的返回到達的時候被Yar調(diào)用, 從而可以處理返回內(nèi)容.

返回值

唯一 ID, 可用于區(qū)分到底是那個調(diào)用的返回.

范例

示例 #1 Yar_Concurrent_Client::call()示例

<?php
function callback($retval$callinfo) {
     
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 

// 這個時候請求都還沒有發(fā)出
?>

以上例程的輸出類似于:

參見