首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel队列(数据库驱动程序)+ Cron作业(任务调度程序)堆叠,服务器崩溃后不再发送

Laravel队列(数据库驱动程序)+ Cron作业(任务调度程序)堆叠,服务器崩溃后不再发送
EN

Stack Overflow用户
提问于 2017-05-04 10:28:35
回答 3查看 1.5K关注 0票数 0

我已经配置了一个laravel队列来发送电子邮件,它过去可以很好地立即发送电子邮件。

我还使用了laravel任务调度程序并配置了队列:侦听以每分钟执行一次,导致服务器崩溃,因为cron作业一次又一次地调用队列:work循环.现场崩溃了。这是客户的现场,所以问题很严重。

托管公司修改了我的laravel任务,使其每5分钟运行一次。自从它崩溃后,所有的邮件现在都留在数据库中,数据库队列根本无法工作。我想这个过程根本不运行。

我有以下问题:

  • 如何在数据库中执行堆叠队列记录?
  • 如何使数据库队列再次工作?
  • 如何配置cron作业和laravel计划以使其正常工作。

注意:我希望它与数据库驱动程序一起工作,而不是使用redis、sync或其他东西,所以请继续关注数据库驱动程序,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-06 22:56:25

laravel任务调度程序和配置队列:每分钟听一次被执行。

这是错误的。您应该从不通过cron调度程序调用queue:listen,否则您将得到意外的行为,就像您所发生的事情一样。

您应该配置队列:侦听作为守护进程永远运行。一旦队列工作器运行-它将永远运行,并根据需要处理作业。您可以使用主管来确保它保持运行。

票数 2
EN

Stack Overflow用户

发布于 2017-05-04 10:47:15

我认为问题在于,queue:listen命令实际上是每分钟执行一次。这不应该发生的。只有当它没有在特定的时刻聆听时,它才应该执行。因此,应该检查侦听器是否正在运行。参见这个要旨,应该对您有用。

要从数据库执行所有挂起的队列任务,请尝试:

代码语言:javascript
复制
php artisan queue:restart

和:

代码语言:javascript
复制
php artisan queue:work

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2021-11-09 09:36:47

在Laravel 8中(在以前的版本中不确定)

代码语言:javascript
复制
php artisan queue:work --stop-when-empty

这个命令可以"croned“,没有任何问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43780355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档