laravel 队列分发 ProcessPodcast::dispatch($podcast); 成不成功怎么知道?

新手上路,请多包涵

laravel 队列分发 ProcessPodcast::dispatch($podcast);没有返回值, 成不成功怎么知道?
如果任务没有到redis 好像也没有保错

阅读 3.5k
1 个回答
try{
  $job = Jobs::dispatch();
  unset($job);
}catch(\Throwable $e){
  // 投递出现了问题
}

try...catch 捕获一下异常,如果有异常就失败,反之成功。

还有个 \Illuminate\Queue\Events\JobQueued 事件。


具体说一下吧,因为 Jobs::dispatch 会返回一个 \Illuminate\Foundation\Bus\PendingDispatch 实例,会在这个实例的析构函数中派发任务,但是一般情况下,如果你没有将 Jobs::dispatch 存成变量,那他就没有引用,会被回收,但是回收不是立即执行的,而是根据策略进行回收。

如果你想要立即触发的话,的话,你可以使用类似于下面的方式。

$job = Jobs::dispatch();
unset($job);

这样子会触发立即回收(调用析构函数,派发任务)

或者,你也可以手动派发 😮

app(\Illuminate\Contracts\Bus\Dispatcher::class)->dispatch($task);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题