Laravel 队列工作者与 cron

Laravel queue worker with cron

我正在尝试让我的网站在每次有人新注册时发送确认电子邮件。

我读了之后很喜欢,但我仍然不相信这是最好的方法。

在我的 cron 中每分钟运行一次并调用 php artisan schedule:run

在我的 console/Kernel

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

我添加了 --once 参数,因为完成后队列工作器不存在,我不希望每分钟有很多新进程 运行。

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

我读到我可以 return null 退出 worker,但是如果可以这样做,那么我怎么才能 return 只有在最后一个工作完成后才为 null?

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

你的 cronjob 应该 运行 这个:php /path/to/laravel/artisan queue:work --stop-when-empty

Queue worker command source code on Github

此外还有一个适用于旧版本 laravel

的软件包

orobogenius/sansdaemon