©
Ce document utilise Manuel du site Web PHP chinois Libérer
(PECL yar >= 1.0.0)
Yar_Concurrent_Client::loop — 发送所有注册的并行调用
$callback
[, callable $error_callback
]] )发送所有的已经通过 Yar_Concurrent_Client::call() 注册的并行调用, 并且等待返回.
callback
如果这个回掉函数被设置, 那么Yar在发送出所有的请求之后立即调用一次这个回掉函数(此时还没有任何请求返回), 调用的时候$callinfo参数是NULL.
如果在注册并行调用的时候制定了callback, 那么那个callback有更高的优先级.
error_callback
错误回掉函数, 如果设置了, 那么Yar在出错的时候会调用这个回掉函数.
Example #1 Yar_Concurrent_Client::loop() example
<?php
function callback ( $retval , $callinfo ) {
if ( $callinfo == NULL ) {
echo "现在, 所有的请求都发出去了, 还没有任何请求返回
" ;
} else {
echo "这是一个远程调用的返回, 调用的服务名是" , $callinfo [ "method" ],
". 调用的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
?>
以上例程的输出类似于:
现在, 所有的请求都发出去了, 还没有任何请求返回 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 4 string(11) "some_method" 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 1 string(11) "some_method" 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 2 string(11) "some_method" 这是一个远程调用的返回, 调用的服务名是some_method, 调用的sequence是 3 string(11) "some_method"