RPC客户端 ¶
客户端同步调用 ¶
php
$user_client = loadRpcClientInstance('User');
// getInfoByUid对应User类中的getInfoByUid方法
$res1 = $user_client->getInfoByUid(123);
$res2 = $user_client->getInfoByUid(333);
$user_client1 = loadRpcClientInstance('User')->getInfoByUid(1111);
$user_client2 = loadRpcClientInstance('User')->getInfoByUid(2222);
var_dump($res1, $res2,$user_client, $user_client1, $user_client2);
// $blog_client = loadRpcClientInstance('Blog');
// for ($i = 0; $i < 15; $i++) {
// # code...
// $blog_res = $blog_client->getByBlogId($i);
// var_dump($blog_res);
// }
var_dump('--');
或者
php
<?php
// User对应服务端配置中service里面的映射类,$config为配置文件的绝对路径或数组
$config = 'client_config.php';
$user_client = shiyunWorker\rpc\RpcClient::instance('User',$config);
// getInfoByUid对应User类中的getInfoByUid方法
$ret_sync = $user_client->getInfoByUid($uid);
客户端异步调用 ¶
调用的方法添加"asend_"前缀,接收数据时添加"arecv_"前缀。
php
<?php
// User对应服务端配置中service里面的映射类,$config为配置文件的绝对路径或数组
$config = 'client_config.php';
$user_client = shiyunWorker\rpc\RpcClient::instance('User',$config);
// getInfoByUid对应User类中的getInfoByUid方法
//异步调用User::getInfoByUid方法
$user_client = $user_client->asend_getInfoByUid($uid);
/**
* 这里是其它的业务代码
* ....................
* ....................
*/
// 需要数据的时候异步接收数据
$ret_async2 = $user_client->arecv_getInfoByUid($uid);
使用 ¶
客户端调用 rpc 调用的是Applications/JsonRpc/Services/User.php 中 User类的getInfoByUid方法。
php
<?php
loadRpcClientInstance('addons/xxx','XxxTest');
RpcClient::instance('User')->getInfoByUid($uid);
客户端同步调用: ¶
php
<?php
include_once 'yourClientDir/RpcClient.php';
// 服务端列表
$address_array = array(
'tcp://127.0.0.1:2015',
'tcp://127.0.0.1:2015'
);
// 配置服务端列表
RpcClient::config($address_array);
$uid = 567;
// User对应applications/JsonRpc/Services/User.php 中的User类
$user_client = RpcClient::instance('User');
// getInfoByUid对应User类中的getInfoByUid方法
$ret_sync = $user_client->getInfoByUid($uid);
客户端异步调用: ¶
RpcClient支持异步远程调用
php
<?php
include_once 'yourClientDir/RpcClient.php';
// 服务端列表
$address_array = array(
'tcp://127.0.0.1:2015',
'tcp://127.0.0.1:2015'
);
// 配置服务端列表
RpcClient::config($address_array);
$uid = 567;
$user_client = RpcClient::instance('User');
// 异步发送数据
// 异步调用User::getInfoByUid方法
$user_client->asend_getInfoByUid($uid);
// 异步调用User::getEmail方法
$user_client->asend_getEmail($uid);
这里是其它的业务代码
..............................................
....................
....................
// 需要数据的时候异步接收数据
// 异步接收数据
$ret_async1 = $user_client->arecv_getEmail($uid);
$ret_async2 = $user_client->arecv_getInfoByUid($uid);
这里是其他业务逻辑