我已经配置了一个laravel队列来发送电子邮件,它过去可以很好地立即发送电子邮件。
我还使用了laravel任务调度程序并配置了队列:侦听以每分钟执行一次,导致服务器崩溃,因为cron作业一次又一次地调用队列:work循环.现场崩溃了。这是客户的现场,所以问题很严重。
托管公司修改了我的laravel任务,使其每5分钟运行一次。自从它崩溃后,所有的邮件现在都留在数据库中,数据库队列根本无法工作。我想这个过程根本不运行。
我有以下问题:
注意:我希望它与数据库驱动程序一起工作,而不是使用redis、sync或其他东西,所以请继续关注数据库驱动程序,谢谢。
发布于 2017-05-06 22:56:25
laravel任务调度程序和配置队列:每分钟听一次被执行。
这是错误的。您应该从不通过cron调度程序调用queue:listen,否则您将得到意外的行为,就像您所发生的事情一样。
您应该配置队列:侦听作为守护进程永远运行。一旦队列工作器运行-它将永远运行,并根据需要处理作业。您可以使用主管来确保它保持运行。
发布于 2017-05-04 10:47:15
我认为问题在于,queue:listen命令实际上是每分钟执行一次。这不应该发生的。只有当它没有在特定的时刻聆听时,它才应该执行。因此,应该检查侦听器是否正在运行。参见这个要旨,应该对您有用。
要从数据库执行所有挂起的队列任务,请尝试:
php artisan queue:restart和:
php artisan queue:work希望这能有所帮助。
发布于 2021-11-09 09:36:47
在Laravel 8中(在以前的版本中不确定)
php artisan queue:work --stop-when-empty这个命令可以"croned“,没有任何问题。
https://stackoverflow.com/questions/43780355
复制相似问题