我已经配置了一个 laravel队列来发送电子邮件,它可以很好地立即发送电子邮件。
我还使用了 laravel任务调度程序并配置了队列:监听每分钟执行,导致服务器崩溃,因为cron作业正在调用队列:工作循环一遍又一遍......该网站崩溃了。它是客户的现场,所以问题非常严重。
托管公司修改了我的laravel cron作业,每5分钟运行一次。并且由于它崩溃了,所有邮件现在都留在数据库中,数据库队列根本不起作用。我想这个过程根本没有运行。
我有这些问题:
注意:我希望它使用数据库驱动程序,而不是使用redis或sync或其他东西,所以请专注于数据库驱动程序,谢谢。
答案 0 :(得分:2)
laravel任务调度程序并配置队列:监听每分钟执行
这是错误的。您应该从不通过cron调度程序调用{{1}},否则您将会遇到类似于您所发生的意外行为。
您应该配置队列:监听永远作为守护进程运行。队列工作程序运行后 - 它将永远运行并根据需要处理作业。您可以使用Supervisor确保其继续运行。
答案 1 :(得分:1)
我认为问题是queue:listen
命令实际上每分钟执行一次。这不应该发生。它应该只在特定时刻没有收听时执行。因此,应该检查监听器是否正在运行。请参阅this gist,应该适合您。
从数据库执行所有挂起队列任务,请尝试:
php artisan queue:restart
和
php artisan queue:work
希望这有帮助。