Laravel 队列(数据库驱动程序)+ Cron 作业(任务调度程序)堆积并且在服务器崩溃后不再发送
Laravel Queues (Database driver) + Cron job (task scheduler) stacked and are not being sent anymore after server crashed
我已经配置了一个 laravel 队列来发送电子邮件,它曾经可以很好地立即发送电子邮件。
我还使用了 laravel 任务调度程序并将 queue:listen 配置为每分钟执行一次 ,导致服务器崩溃,因为 cron 作业正在调用queue:work 一遍又一遍地循环……网站崩溃了。而且是客户端的现场,所以问题比较严重
托管公司将我的 laravel cron 作业修改为每 5 分钟 运行。自从它崩溃后,所有邮件现在都保留在数据库中,数据库队列根本不起作用。我想这个过程根本不是 运行ning。
我有这些问题:
- 如何执行数据库中的堆叠队列记录?
- 如何使数据库队列重新工作?
- 如何配置 cron 作业和 laravel 计划以正常工作。
注意:我希望它与数据库驱动程序一起工作,而不是与 redis 或 sync 或其他东西一起工作,所以请专注于数据库驱动程序,谢谢。
我认为问题在于 queue:listen
命令实际上每分钟执行一次。这不应该发生。它应该只在特定时刻不在收听时执行。因此,应该检查侦听器是否为 运行。参见 this gist,应该适合你。
至于从数据库执行所有挂起队列任务,尝试:
php artisan queue:restart
并且:
php artisan queue:work
希望对您有所帮助。
laravel task scheduler and configured the queue:listen to be executed every minute
这是错误的。您应该 永远不要 通过 cron 调度程序调用 queue:listen
,否则您会遇到意外的行为,例如发生在您身上的事情。
您应该将 queue:listen 设置为 运行 永远作为守护进程。一旦队列工作者 运行ning - 它将永远 运行 并根据需要处理作业。您可以使用 Supervisor 来确保它保持 运行ning.
在Laravel 8中(以前的版本不确定)
php artisan queue:work --stop-when-empty
这个命令可以毫无问题地“croned”。
我已经配置了一个 laravel 队列来发送电子邮件,它曾经可以很好地立即发送电子邮件。
我还使用了 laravel 任务调度程序并将 queue:listen 配置为每分钟执行一次 ,导致服务器崩溃,因为 cron 作业正在调用queue:work 一遍又一遍地循环……网站崩溃了。而且是客户端的现场,所以问题比较严重
托管公司将我的 laravel cron 作业修改为每 5 分钟 运行。自从它崩溃后,所有邮件现在都保留在数据库中,数据库队列根本不起作用。我想这个过程根本不是 运行ning。
我有这些问题:
- 如何执行数据库中的堆叠队列记录?
- 如何使数据库队列重新工作?
- 如何配置 cron 作业和 laravel 计划以正常工作。
注意:我希望它与数据库驱动程序一起工作,而不是与 redis 或 sync 或其他东西一起工作,所以请专注于数据库驱动程序,谢谢。
我认为问题在于 queue:listen
命令实际上每分钟执行一次。这不应该发生。它应该只在特定时刻不在收听时执行。因此,应该检查侦听器是否为 运行。参见 this gist,应该适合你。
至于从数据库执行所有挂起队列任务,尝试:
php artisan queue:restart
并且:
php artisan queue:work
希望对您有所帮助。
laravel task scheduler and configured the queue:listen to be executed every minute
这是错误的。您应该 永远不要 通过 cron 调度程序调用 queue:listen
,否则您会遇到意外的行为,例如发生在您身上的事情。
您应该将 queue:listen 设置为 运行 永远作为守护进程。一旦队列工作者 运行ning - 它将永远 运行 并根据需要处理作业。您可以使用 Supervisor 来确保它保持 运行ning.
在Laravel 8中(以前的版本不确定)
php artisan queue:work --stop-when-empty
这个命令可以毫无问题地“croned”。