如何解决数据库队列连接在生产中不起作用
我的带有 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
并在生产中成功生成了一封邮件。
这是怎么回事,我该如何解决这个问题?
解决方法
当你评论说使用了 supervisord,重启 supervisord。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。