Yar_Concurrent_Client::loop

(PECL yar >= 1.0.0)

Yar_Concurrent_Client::loop發(fā)送所有注冊的并行調(diào)用

說明

public static Yar_Concurrent_Client::loop(callable $callback = ?, callable $error_callback = ?): boolean

發(fā)送所有的已經(jīng)通過 Yar_Concurrent_Client::call()注冊的并行調(diào)用, 并且等待返回.

參數(shù)

callback

如果這個回掉函數(shù)被設置, 那么Yar在發(fā)送出所有的請求之后立即調(diào)用一次這個回掉函數(shù)(此時還沒有任何請求返回), 調(diào)用的時候$callinfo參數(shù)是NULL.

如果在注冊并行調(diào)用的時候制定了callback, 那么那個callback有更高的優(yōu)先級.

error_callback

錯誤回掉函數(shù), 如果設置了, 那么Yar在出錯的時候會調(diào)用這個回掉函數(shù).

返回值

范例

示例 #1 Yar_Concurrent_Client::loop() example

<?php
function callback($retval$callinfo) {
     if (
$callinfo == NULL) {
        echo 
"現(xiàn)在, 所有的請求都發(fā)出去了, 還沒有任何請求返回\n";
     } else {
              echo 
"這是一個遠程調(diào)用的返回, 調(diào)用的服務名是"$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ā)出去了, 還沒有任何請求返回
這是一個遠程調(diào)用的返回, 調(diào)用的服務名是some_method, 調(diào)用的sequence是 4
string(11) "some_method"
這是一個遠程調(diào)用的返回, 調(diào)用的服務名是some_method, 調(diào)用的sequence是 1
string(11) "some_method"
這是一個遠程調(diào)用的返回, 調(diào)用的服務名是some_method, 調(diào)用的sequence是 2
string(11) "some_method"
這是一個遠程調(diào)用的返回, 調(diào)用的服務名是some_method, 調(diào)用的sequence是 3
string(11) "some_method"

參見