【问题标题】:How to stop a running queued Job in laravel?如何在 laravel 中停止正在运行的排队作业?
【发布时间】:2020-12-23 22:17:43
【问题描述】:

我在 laravel 上使用 redis 队列。一切正常。

我还在前端显示队列中的作业。现在我想从前端发出一个请求来终止一个已经在运行或正在进行的作业。

提前致谢

【问题讨论】:

    标签: php laravel cron scheduled-tasks jobs


    【解决方案1】:

    如果您真的想从前端执行此操作,唯一的方法(我知道)就是使用您的 Query Builder(甚至 Eloquent)继续检查数据库表上的条目工作的handle() 方法并从那里停止。

    例如,您可以在数据库中有一个表,例如job_statuses,它将有一个job_id 和一个status 列。然后您可以创建一个路由来将状态列更改为aborted 之类的内容。现在在您的Job 类'handle() 方法中检查状态是否在一些迭代后中止并抛出异常调用作业的fail($e) 方法来优雅地停止作业并执行一些额外的逻辑.像这样:

    use Illuminate\Support\Facades\DB;
    
    if(DB::table('job_statuses')
        ->where('job_id',$this->getJobId())->first()->status === 'aborted'){
                    //throw new Exception('Aborted by user.');
        }
    

    【讨论】:

      猜你喜欢
      • 2013-12-04
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 2017-01-14
      • 2014-11-11
      • 2022-08-15
      • 2014-09-26
      • 2013-12-28
      相关资源
      最近更新 更多