微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库队列连接在生产中不起作用

如何解决数据库队列连接在生产中不起作用

我的带有 cron-job 的 Laravel (7.15) 应用程序包含两个在特定时间段每天执行的命令。

PHP artisan report:generate
PHP artisan report:send-mail

report:generate 命令执行一次,而 report:send-mail 每 5 分钟执行一次。

直到昨天,生产中的 QUEUE_CONNECTIONsync,并且运行良好。但问题是我的报告包含大型且复杂的查询,每个查询需要大约 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 表。

现在我获得了每个报告的工作条目,但它没有尝试,attempts0 表中显示 jobs。似乎队列在用于发送报告邮件时无法生成报告。为了测试,我通过命令手动尝试 queue:work 并在生产中成功生成了一封邮件

这是怎么回事,我该如何解决这个问题?

解决方法

当你评论说使用了 supervisord,重启 supervisord。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。