启动时会调用onWorkerStart, 但关闭时不调用onWorkerStop
如何确认的onWorkerStop没有触发?
[attach]176[/attach]
看下业务代码是否有死循环或者sleep或者是耗时的操作。exit with status 9意思是进程卡在了业务代码里面,所以无法执行onWorkerStop
Timer算不算
同样Timer的任务有耗时阻塞也会导致进程卡住
但是我stop了之后,我查了下,进程的确退出了,而且Timer是个全局的任务,workerman启动的时候就会启动,只要workerman还运行着,Timer也必须运行着。所以就算是要关闭Timer,我得在onWorkerStop函数中关闭。
退出了是因为进程卡在你的业务代码里面出不来,被kill掉了 也不是Timer机制的问题,是你业务代码的问题 业务代码不要有死循环、不要有sleep、不要有长时间阻塞的操作
我测试了下,在业务代码前,直接return,也就是根本就不执行业务,还是没有调用onWorkerStop
可能还是哪里执行了长时间阻塞的业务。你可以下载个干净的demo试下
我刚下了官网的Chat的demo下来,没有做任何改动,但还是没有触发onWorkerStop函数
是否有出现 exit with status 9 错误?
出现了,这是截图
这是官方的工程,未做任何改动
启动后,新开个终端,运行下status看下。你用的是mac?
嗯,是mac
看起来是你的进程都阻塞住了,我在我的mac下试下
如何确认的onWorkerStop没有触发?
[attach]176[/attach]
看下业务代码是否有死循环或者sleep或者是耗时的操作。exit with status 9意思是进程卡在了业务代码里面,所以无法执行onWorkerStop
Timer算不算
同样Timer的任务有耗时阻塞也会导致进程卡住
但是我stop了之后,我查了下,进程的确退出了,而且Timer是个全局的任务,workerman启动的时候就会启动,只要workerman还运行着,Timer也必须运行着。所以就算是要关闭Timer,我得在onWorkerStop函数中关闭。
退出了是因为进程卡在你的业务代码里面出不来,被kill掉了
也不是Timer机制的问题,是你业务代码的问题
业务代码不要有死循环、不要有sleep、不要有长时间阻塞的操作
我测试了下,在业务代码前,直接return,也就是根本就不执行业务,还是没有调用onWorkerStop
可能还是哪里执行了长时间阻塞的业务。你可以下载个干净的demo试下
我刚下了官网的Chat的demo下来,没有做任何改动,但还是没有触发onWorkerStop函数
是否有出现 exit with status 9 错误?
出现了,这是截图
这是官方的工程,未做任何改动
启动后,新开个终端,运行下status看下。你用的是mac?
嗯,是mac
看起来是你的进程都阻塞住了,我在我的mac下试下