遇到一个很神奇的事情,队列消费修改了后还是执行的之前的代码

kspade

今天在处理redis queue 队列时发现一个很神奇的事情

处理队列-消费(假设老代码是在终端输出:123) 我把它修改为:456

然后重启webman 发送队列消息,终端还是显示输出的:123 (之前的代码)

我继续测试 发送10次队列消息进去, 偶尔有2 - 3次是输出的:456

这是什么情况啊? 而且我甚至直接把(/app/queue/redis)队列消费文件删除,然后重启webman 再发送队列消息进去,依然还能消费(输出的:123).....我草这 从来没遇到过,这是怎么回事啊?

服务器只运行了一个webman 项目 也只有1份代码

399 2 0
2个回答

kspade

找到问题了 存在 workerman 进程,这进程就是之前运行的消费进程,很奇怪不知道为什么 主程序都重启了 挂了,但是workerman 的那些消费进程居然还一直在运行,并且即使把文件删除了 它都还能正常工作

不明所以

解决问题方法:

kill -9 `ps -ef | grep webman | grep -v grep | awk '{print $2}'`
  • songshu 2023-12-01

    我遇到过这种情况,跟workman无关,和进程 也无关。就是单纯的cli模式下,在index.php里面编写一个类,然后cli模式运行这个文件。有时候改了代码,但是运行结果还是改代码之前的结果。所以我合理的怀疑cli模式是有缓存的。

  • kspade 2023-12-02

    就是修改代码,有时候webman 重启 甚至停止掉,你 ps aux 发现webman那些消费进程还在运行。。不知道为什么,反正强杀掉就行了。

meows

是不是有旧的worker 还在运行。

  • kspade 2023-12-03

    是的

  • meows 2023-12-03

    出现这种情况应该是master 进程先没了,不然不会出现这种情况。

🔝