繁体   English   中英

如何从Laravel的工作ID获得排队的工作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM