Workerman多进程下如何删除或销毁定时器Timer?

horkooo

简单介绍一下,我用Workerman开了4个进程来处理不同的定时任务。在4个进程中对应4个不同的timer_id。

我已经知道在当前进程中可以使用Timer::del()来删除定时器。

我的问题有两个:

一、如果Workerman停止了运行,各个进程的定时器是不是默认就被清除了,需不需要在代码中主动清除?比如写一个onWorkerStop的回调清除定时器。

二、如何在其他闭包函数中,进入指定的进程操作数据?比如onWorkerStart开了4个进程,在onWorkerStop时进入1号进程操作数据。

官方文档看的不是很懂,希望知道的朋友麻烦解答一下我的困惑。谢谢!

2641 1 1
1个回答

xiuwang

进程没了这个进程里的所有东西就都没了吧,包括定时器也肯定没了的,所以进程停止的时候不用清理定时器。

不能跨进程直接操作数据,都是进程间通讯来操作。比如A进程想操作B进程的变量,只能A进程通过某种方式通知B进程,B进程再自己去操作。 https://github.com/walkor/global-timer 你看下源码,用的是channel来进程间通讯删除定时器的

年代过于久远,无法发表回答
🔝