【问题标题】:How to ensure laravel job queue is executed after a previous one如何确保 laravel 作业队列在前一个作业队列之后执行
【发布时间】:2015-12-23 12:02:28
【问题描述】:

拥有

$this->dispatch(new SaveVideo($video, $api));

然后是

if ($user = Auth::user()) {
    $this->dispatch(new RegisterView($video['id'], $user));
}

在同一个控制器中,如何确保第二次调度仅在第一次调度完成后发生?有什么想法吗?

【问题讨论】:

  • 我认为它不是在完成后让第一个调用第二个的选项?可能是显而易见的,但这肯定是最简单的方法吗?
  • 已经这样做了,但不能确保它只发生在第一个之后。大多数情况下,第二份工作失败了,因为第一份还没有完成
  • 事实上查看文档laravel.com/docs/5.1/queues Queue::after 方法允许您注册一个回调以在队列作业成功执行时执行。此回调是执行附加日志记录、排队后续作业或增加仪表板统计信息的绝佳机会。
  • 哦,我完全忽略了这一点。我现在就试一试
  • 希望它按要求工作我添加了以上内容作为答案,只是为了让人们将来更容易阅读。

标签: php laravel queue jobs


【解决方案1】:

查看Queue::after 方法,这应该可以满足您的要求。

Job Completion Event documentation 状态

Queue::after 方法允许您注册一个回调,以便在排队作业成功执行时执行。此回调是执行附加日志记录、排队后续作业或增加仪表板统计信息的绝佳机会。

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 1970-01-01
    • 2022-08-20
    • 2017-11-20
    • 2018-07-15
    • 1970-01-01
    • 2019-07-12
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多