webman平滑重启的时候正在执行的定时器会直接消失吗

晚安。

php start.php reload
我有一个创建的定时器 会每隔1秒向长连接客户端推送倒计时
重启服务或者平台重启 倒计时推送就会停止了
这种情况该怎么处理好一点
倒计时为0 的时候会触发下一个定时器推送对战结果
这个也会跟着消失了

操作系统及workerman/webman等框架组件具体版本

都是最新版本

791 3 2
3个回答

meows

直接reload 定时器肯定没有了,提供服务的进程重启了。
当然你可以reload -g 这样的话,旧的服务不会处理新连接,新开的worker会处理新连接。
那么旧worker什么时候退出,在旧worker连接数0的时候。

  • 晚安。 2023-11-22

    这样是不是更新的代码要很长一段时间才会生效

  • meows 2023-11-22

    你把维持心跳的worker 单独做个服务,然后设置reloadable = false, 这样其它进程立马就可以更新了呀

meows

如果你想要某个worker 不被reload 所干扰导致连接断开。
你可以看看这个:https://www.workerman.net/doc/workerman/worker/reloadable.html
对应不想要被reload干扰的worker, reloadable = false; 就可以了,这样其余worker reload,不会干扰你有定时器这个服务。

  • 暂无评论
914739959

不能把全部要执行的定时器计划放到数据库吗?比如今天计划要给877 878 879三个客户推送倒计时,没推的时候,标记为0,开始推了,开始推标记为1,结束标记为2,Timer每2秒检查一次计划表,每次重启服务器,就在服务进程初始化方法里 删除全部正在进行的任务,重新开启标记为1的任务,这样不知道能不能行

  • 暂无评论
×
🔝