【问题标题】:Laravel track job chain start and finishLaravel 跟踪作业链的开始和结束
【发布时间】:2018-07-30 13:27:38
【问题描述】:

我按照文档在 Laravel 中创建了一系列部署作业:

https://laravel.com/docs/5.6/queues#job-chaining

来自文档(类似于我的代码):

ProcessPodcast::withChain([
    new OptimizePodcast,
    new ReleasePodcast
])->dispatch();

有什么方法可以跟踪工作链是否已经开始和完全结束?

我想有可能总是以beforeDeployment 工作和afterDeployment 工作开始链。由于发生错误时链会中断并且无法到达afterDeployment,因此这似乎是可行的。

对采用这种方法有什么想法,或者有什么更容易做的事情吗?

我想我的方法可以让我像这样设置一个监听器:

https://laravel.com/docs/5.6/queues#job-events

干杯!

【问题讨论】:

    标签: php laravel laravel-queue laravel-jobs


    【解决方案1】:

    老实说,如果我正在实施这个 – 我会在成功时触发一个事件 PodcastWasReleased 通知我,但我会再次连接到 Queue::failing() 侦听器 (https://laravel.com/docs/5.6/queues#failed-job-events) 来触发一个事件 @ 987654324@。

    您可以将失败的作业传递给事件,以简明扼要地了解发生了什么,以及 JobFailed 对象中可用的堆栈跟踪。

    这有帮助吗?也许它至少会让你走上一条不同的道路。

    让我知道你的进展:)

    【讨论】:

    • 目前我已经在链上添加了 2 个 Job 来表示一个 delpoyment 链的开始和结束。如果我要在PodcastWasReleased 上触发一个事件,这将意味着这将始终是部署的开始,并且会产生非常紧密的耦合。因为我可以有多个部署链,其中包含不同的作业,所以这是不可取的(PodcastWasReleased 甚至可能不在那里)。我只是创建了一个方法,它接受所有工作in between 开始和结束工作。
    • 我明白了,这听起来真的很有趣。你介意在这里给我发代码吗?我很想看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多