如果从数据库中删除,Laravel 中的排队作业是不是会停止?
Posted
技术标签:
【中文标题】如果从数据库中删除,Laravel 中的排队作业是不是会停止?【英文标题】:Does a queued job in Laravel get stopped if deleted from database?如果从数据库中删除,Laravel 中的排队作业是否会停止? 【发布时间】:2021-12-18 02:54:57 【问题描述】:当用户删除他们的帐户时,我正在尝试实现一项功能,它会激活一个在一周内排队的作业,但如果用户决定保留他们的帐户,则允许他们取消此队列。但是,我注意到当我从数据库中删除作业时,作业没有激活。这是取消排队作业的正确方法吗?
我在 .env 文件中为我的 QUEUE_CONNECTION=database 使用数据库选项。我还有一个工作表。
【问题讨论】:
【参考方案1】:要从数据库中删除所有失败的作业,请使用:
php artisan queue:flush
要从数据库中删除失败的作业,请使用:
php artisan queue:forget your_failed_job_uid
要从数据库中删除所有作业,请使用:
php artisan queue:clear
请注意: 您的系统将处理队列取决于队列配置,例如延迟作业或失败的作业重试 3 次,每次之后都会有延迟。
【讨论】:
有趣的是,我将尝试为我的控制器实现该命令。谢谢! 哦,我想知道如何取消尚未失败且计划稍后激活的作业。 DB::table('jobs')->where('id','你的工作id')->delete();您可以创建一个自定义工匠命令接受作业 ID 作为参数; 谢谢!这真的很有帮助!我实现了类似的东西,我将用户和工作 ID 存储在一个单独的表中。如果用户想取消作业,请调用类似于您的命令。以上是关于如果从数据库中删除,Laravel 中的排队作业是不是会停止?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel 5.1 在 IronMQ 中获取排队作业的数量?
PHP apcu 在 Laravel 排队/分派作业中不持久