Laravel与cron的队列工作者

时间:2017-09-29 11:31:21

标签: laravel cron laravel-queue

我试图让我的网站每次有人注册时都会发送确认电子邮件。

我在阅读之后就这样做了,但我仍然不相信这是最好的方法。

我的cron中的

每分钟运行一次并调用php artisan schedule:run

在我的控制台/内核

protected function schedule(Schedule $schedule)
{
    $schedule->command('queue:work --once')->everyMinute()->withoutOverlapping();
}

我添加了--once参数,因为队列工作程序在完成时不存在,并且我不希望每分钟都运行许多新进程。

有没有办法让队列工作者完成所有作业并退出,然后再一分钟后启动它,这样我就没有很多实例,或者它只是一个实例?

我读到我可以返回null来退出工作者,但如果可以这样做,那么我怎样才能在最后一个工作完成后返回null?

1 个答案:

答案 0 :(得分:3)

对于仍在寻找解决方案的任何人,他们在laravel 5.7中添加了对运行队列中所有作业的支持,然后在完成所有作业后停止队列工作器。

Queue worker command source code on Github

另外还有一个适用于旧版本laravel的软件包

orobogenius/sansdaemon