Yar_Concurrent_Client::loop

(PECL yar >= 1.0.0)

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

說明

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

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

參數(shù)

callback

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

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

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)在, 所有的請(qǐng)求都發(fā)出去了, 還沒有任何請(qǐng)求返回\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)在, 所有的請(qǐng)求都發(fā)出去了, 還沒有任何請(qǐng)求返回
這是一個(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"

參見