jsonrpc 异步调用问题

不会投三分的库里

include_once 'yourClientDir/RpcClient.php';
// 服务端列表
$address_array = array(
'tcp://127.0.0.1:2015',
'tcp://127.0.0.2: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);


上面是官方的测试代码:
如果getInfoByUid执行需要2秒,getEmail执行需要3秒
理想的结果:整个流程执行完需要3秒
测试的结果:整个流程执行完需要5秒
问下是什么原因呀?

阅读 290
2个回答

six

1、服务端至少开2个进程。
2、服务端设置$worker->reusePort=true;试下

  • 暂无评论
不会投三分的库里

加上了$worker->reusePort=true;就可以了。大佬可以讲下什么原因么?难道没有开端口复用,服务端会分配到同一个子进程去处理么?

  • 暂无评论