
服务端 rpc 启动后,如果保持过长时间,客户端请求会读到一个历史的值,如何实时读取到最新值
$server = new Server("tcp://0.0.0.0:1111"); $server->addMethod('test', $this); $server->start(); $user = TcpClient::create('tcp://0.0.0.0:1111/', false); $respOnse= $user->test($this->token, ['code' => 'CNY']); public function handle() { $server = new Server("tcp://0.0.0.0:1111"); $server->addMethod('test', $this); $server->start(); } public function test($token, $param) { return (new RpcUserService())->test($token, $param); } public function test($token, array $param) { if (!JWTAuth::setToken($token)->check()) { return ['code' => 401, 'msg' => __('messages.登录过期'), 'data' => []]; } if (!isset($param['currency_code'])) { return ['code' => 402, 'msg' => __('messages.参数错误'), 'data' => []]; } $user = JWTAuth::setToken($token)->authenticate(); $user = (new UserBalance()) ->where(['id' => $user->id]) ->where(['code' => $param['code']]) ->select('balance') ->first(); return ['code' => 200, 'msg' => __('messages.成功'), 'data' => $user]; } 1 reneiw 2022 年 6 月 28 日 你是不是用了单例?直接返回静态变量 |
3 reneiw 2022 年 6 月 28 日 你的 test 方法能不能贴下 |
5 reneiw 2022 年 6 月 28 日 ``` $user = (new UserBalance()) ->where(['id' => $user->id]) ->where(['code' => $param['code']]) ->select('balance') ->first(); ``` 不知道你这个有没有缓存 |
6 MyEevy OP @reneiw db 这块没做缓存,我尝试过直接 http 请求这个 service ,可以正常读取到最新值。rpc 重启前后读取值不一样。会与这些设置有关系吗,或者 linux 启动方式 Hprose\ResultMode::Normal Hprose\ResultMode::Serialized Hprose\ResultMode::Raw Hprose\ResultMode::RawWithEndTag |
7 reneiw 2022 年 6 月 28 日 另谋高就吧,我承认我不行了 |