自定义进程访问数据库的诡异问题

kfcabc

问题描述

背景:1个服务端程序和1个客户端的程序,他们两个中间有个rabbitmq,两端都约定了索要数据的json格式,客户端到定期向队列中放入请求数据的要求,服务端收到需求检索数据库将检索出来的数据放回队列,现在出现了个诡异的问题:程序刚启动时候获取数据都正常,但是当这个程序持续运行1天到2天后诡异的问题出现,客户端与服务端跟mq的通讯都没有问题,只是服务端检索出来的数据不是预期的数据结果,例如:客户端本来是想服务器索要20日的数据,结果服务端给返回的是11日的数据,这段儿程序非常简单就是使用的eloqent orm进行获取的数据,也没有用缓存等组件,纯纯的搜索数据库。
出现这个混乱的问题后重启程序即可恢复正常。

我的程序已经启用了swoole协程化,并且数据库都用了连接池。

操作系统环境及workerman/webman等具体版本

这里写具体的系统环境相关信息

"workerman/webman-framework": "~2.1",
"workerman/workerman": "~5.1",
122 1 0
1个回答

轻云蔽月

这个有一种可能就是你的代码缓存了某个日期,就是这个11号的日期,导致这个关键参数没变化,然后你的程序判断有这个日期了,就直接用这个日期去查找数据库。

所以你的程序重启了,这个日期也就重置了,就变正常了。

  • kfcabc 1天前

    刚才复盘了整个程序,确实是我的疏忽使用依赖注入的时候把书简定格到某个时间点后再没变化过了,脑袋秀逗了,谢谢提醒

×
🔝