我有一些任务是周期性执行的,并且时间比较长。当我退出的时候,我希望当前任务执行完才退出
stop_timeout没效果 他执行完会开启下一个任务
同问:只看见reload有平滑重启,但是没看见平滑关闭。 也遇到这个需求了,同求解答。
写了一个小Demo感觉可以 但是还有点小问题 stop_timeout必须大于单个任务时间 reloadable必须为false 不支持reload
namespace app\process; use support\Db; use Workerman\Worker; class FooProcess { private bool $isExit = false; public function onWorkerStart() { echo "启动".PHP_EOL; pcntl_async_signals(true); pcntl_signal(SIGTERM, function (){ echo "SIGTERM".PHP_EOL; $this->isExit = true; }); pcntl_signal(SIGINT, function (){ echo "SIGINT".PHP_EOL; $this->isExit = true; }); while (!$this->isExit){ $this->doJob(); } Worker::stopAll(); } private function doJob() { echo "开始执行".PHP_EOL; $i = 0; while ($i < 10){ echo "执行中".$i.PHP_EOL; Db::table('demo') ->selectRaw('sleep(1)') ->get(); $i++; } echo "执行结束".PHP_EOL; } }
自定义指令也一样
同问:只看见reload有平滑重启,但是没看见平滑关闭。
也遇到这个需求了,同求解答。
写了一个小Demo感觉可以 但是还有点小问题 stop_timeout必须大于单个任务时间 reloadable必须为false 不支持reload
自定义指令也一样