Skip to content

zhxia/PhpRPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PhpRPC

基于ZMQ的异步RPC框架,可用于将单个PHP进程中的串行调用转换为非阻塞的异步调用,缩短整个请求耗时

使用示例:

开启服务端:

php demo_service.php -f ipc:///tmp/frontend.ipc -b ipc:///tmp/backend.ipc -m 2 -n 1

require_once dirname(__FILE__) . '/../src/client.php';

$context = new ZMQContext();
//$endpoints = array('ipc:///tmp/frontend1.ipc','ipc:///tmp/frontend2.ipc');
$endpoints='ipc:///tmp/frontend.ipc';
$client = new RpcClient($context, $endpoints);
$sql='select * from jobs';
$client->start_request('executeSql',$sql,function($resp,$status){
if($status==200){
    print_r($resp);
}
else{
    echo 'failed!'.PHP_EOL;
}
});

$client->start_request('getDateTime',null,function($resp,$status){
if($status==200){
    echo $resp.PHP_EOL;
}
elseif($status==404){
    echo 'remote method not found!'.PHP_EOL;
}

});

$client->start_request('longTimeWork',null,function($resp,$status){
if($status==200){
    echo $resp.PHP_EOL;
}
else{
    echo 'failed,status:'.$status.PHP_EOL;
}
});
$client->wait_for_responses(0.1);

Releases

No releases published

Packages

No packages published

Languages