如果从数据库中删除,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 排队/分派作业中不持久

Laravel - 自动执行排队的作业[重复]

Laravel 尝试排队作业,触发新尝试的正确方法?

laravel 5.1 在没有 VM 重启的情况下看不到作业文件的更改

Laravel 排队的作业即使有延迟也会立即处理