问题描述
我还在前端显示了队列中的作业。现在,我想从前端发出请求,要求终止已经运行或正在进行的作业。
预先感谢
解决方法
如果您真的想从前端执行此操作,唯一的方法(我知道)是使用您的查询生成器(甚至 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.');
}