请教一个 Hprose- PHP 问题

2022-06-28 10:49:41 +08:00
 MyEevy

服务端 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']);
948 次点击
所在节点    程序员
8 条回复
reneiw
2022-06-28 11:56:53 +08:00
你是不是用了单例?直接返回静态变量
MyEevy
2022-06-28 13:39:58 +08:00
@reneiw 不是,工厂模式,奇怪的是,服务端重启后,可以正常。问题总是出现在一段时间后。文档中并没有说存在自动缓存策略
reneiw
2022-06-28 13:51:34 +08:00
你的 test 方法能不能贴下
MyEevy
2022-06-28 16:17:25 +08:00
@reneiw 服务端方法已贴,麻烦看下,是不是存在服务端设置返回值的问题
reneiw
2022-06-28 17:03:37 +08:00
```
$user = (new UserBalance())
->where(['id' => $user->id])
->where(['code' => $param['code']])
->select('balance')
->first();
```

不知道你这个有没有缓存
MyEevy
2022-06-28 17:13:18 +08:00
@reneiw db 这块没做缓存,我尝试过直接 http 请求这个 service ,可以正常读取到最新值。rpc 重启前后读取值不一样。会与这些设置有关系吗,或者 linux 启动方式
Hprose\ResultMode::Normal
Hprose\ResultMode::Serialized
Hprose\ResultMode::Raw
Hprose\ResultMode::RawWithEndTag
reneiw
2022-06-28 17:19:25 +08:00
另谋高就吧,我承认我不行了
MyEevy
2022-06-28 17:21:43 +08:00
@reneiw 没事。麻烦了,现在的作法就是定时重启,只是很奇怪产生问题的原因,加载到内存也不是数据到内存,可能需要加个日志查看监控下了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862645

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX