我试图让我的网站在每次有人新注册时发送确认电子邮件。
我在阅读完相关内容后按照下面的方式做了,但我仍然不相信这是最好的方法。
在我的 cron 中每分钟运行并调用php artisan schedule:run
在我的控制台/内核中
protected function schedule(Schedule $schedule)
{
$schedule->command('queue:work --once')->everyMinute()->withoutOverlapping();
}
我添加了 --once 参数,因为完成后队列工作程序不存在,并且我不希望每分钟运行许多新进程。
有没有一种方法可以让队列工作人员完成所有作业并退出,然后在一分钟后再次启动它,这样我就没有很多实例,或者只是一个实例?
我读到我可以返回 null 来退出工作人员,但如果可以做到这一点,那么我如何才能仅在最后一个工作完成后返回 null 呢?
对于任何仍在寻找解决方案的人,在 laravel 5.7 中,他们添加了支持运行队列中的所有作业,然后在所有作业完成后停止队列工作线程。
你的 cronjob 应该运行这个:php /path/to/laravel/artisan queue:work --stop-when-empty
Github 上的队列工作命令源代码 https://github.com/laravel/framework/blob/51cec6a7fafcc08212da8515fdc9e3d103e3fc06/src/Illuminate/Queue/Console/WorkCommand.php#L26
另外还有一个适用于旧版本 laravel 的软件包
奥罗博吉尼斯/sansdaemon https://github.com/orobogenius/sansdaemon
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)