我的带有 cron-job
的 Laravel (7.15) 应用程序包含两个在特定时间段每天执行的命令。
php artisan report:generate
php artisan report:send-mail
report:generate
命令执行一次,而 report:send-mail
每 5 分钟执行一次。
直到昨天,生产中的 QUEUE_CONNECTION
是 sync
,并且运行良好。但问题是我的报告包含大型且复杂的查询,每个查询需要大约 2-3 小时(表格也有数百万条数据)。
所以我决定将我的报告移到可以并行生成的 queued-jobs
中。所以我把我的 QUEUE_CONNECTION
改成了 database
。并在生产中运行以下命令。
php artisan config:cache
php artisan cache:clear
php artisan queue:flush
php artisan queue:retart
queue:work
已经在我的服务器上运行,不幸的是我无权关闭和打开它(仅限网络团队授权)。
我已经运行了 queue:table
& queue:failed-table
之前在生产数据库中生成了 jobs
& failed_jobs
表。
现在我获得了每个报告的工作条目,但它没有尝试,attempts
在 0
表中显示 jobs
。似乎队列在用于发送报告邮件时无法生成报告。为了测试,我通过命令手动尝试 queue:work
并在生产中成功生成了一封邮件。
这是怎么回事,我该如何解决这个问题?
答案 0 :(得分:0)
当你评论说使用了 supervisord,重启 supervisord。