我在数据库中有一个作业列表,当我运行php artisan queue:work database
时,它会处理每个作业,但是一旦处理了最后一个作业,它似乎就不会停止。我认为这样做会意味着一旦工人没有工作,它就会停止。
答案 0 :(得分:3)
如果您希望工作人员在完成一项工作后退出,请添加--once
选项:
$ php artisan queue:work --once
从5.7开始,您可以使用--stop-when-empty
处理队列中的所有作业,然后退出:
$ php artisan queue:work --stop-when-empty
文档:https://laravel.com/docs/5.7/queues#running-the-queue-worker
注意:默认行为在Laravel 5.3周围更改。以前,工人要处理一份工作然后退出;只有使用了--daemon
选项,它才能继续运行。在5.3之后,这成为默认行为,--daemon
已弃用。
答案 1 :(得分:0)
请注意,一旦启动queue:work命令,它将继续运行,直到手动将其停止或您关闭终端为止。使用--once选项不能解决您的问题。 有关更多信息,请查看laravel文档。
文档说:--once选项可用于指示工作人员仅处理队列中的单个作业。