![](/img/trans.png)
[英]Does a Queued Job in Laravel get stopped if deleted from database?
[英]How to get the queued job from job ID in Laravel?
有没有办法从Laravel的工作ID获得排队的工作? 将作业添加到队列时,我存储作业ID。 稍后在某个时间点(处理队列中的作业有延迟),我想从队列中删除该作业。 如果我可以使用作业ID获取队列中的作业,我可以使用delete()
方法将其删除。
我将此代码用于laravel 5.5:
use Illuminate\Contracts\Bus\Dispatcher;
$job = ( new JOB_CLASS() )->onQueue('QUEUE_NAME')->delay('DELAY');
$id = app(Dispatcher::class)->dispatch($job);
它是一个队列,所以你不能选择它,但是如果你也在队列之外记录数据,你可以在Queue :: before(){}中添加到AppServiceProvider.php来查看存储的id或对作业的引用因为他们离开队列并在处理之前。
我也在这个领域工作,所以如果我找出这个代码,如果我这样做的话就会发布。 当你在before()中获得一个事件回到这里时,你必须打开它并让Job出来检查。
您可以简单地使用DB :: table()通过它来搜索特定作业,因为在调度作业时它会返回作业表的ID。
use DB;
class ServiceClass{
public function deleteJobIfExists($id){
$jobTable = 'jobs';
$job = DB::table($jobTable)->find($id);
return $job ? ($job->delete ? 1 : -1 ) : 0;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.