Laravel 5.4 - 一旦工作完成,就打电话给另一份工作

时间:2017-12-07 19:50:05

标签: php laravel laravel-5 cron job-scheduling

作业完成后,我在生成另一个作业队列时遇到了一些问题。

如laravel docs中所述,我使用JobProcessed $event来检测事件,它位于AppServiceProvider.php中,如下所示

    Queue::after(function (JobProcessed $event) {
        $payload = $event->job->getRawBody();
        $payload = json_decode($payload);
        $data = $payload->data;
        $command = unserialize($data->command);
        if($command->queue == 'importInsights' && in_array($command->getInsightsOption(), ['item1', 'item2'])) {
            try {
                Artisan::queue("sync:insights", [
                    'insightOption' => 'some option',
                    '--day' => 'test date',
                    '--queue' => 'syncInsights'
                ]);
            }
            catch (\Exception $e) {
                Log::error("Failed to call insights queue" . $e->getMessage());
            }

        }
    });

对于我的本地机器它正在工作,因为我在Windows上并且没有安装redis,但在测试服务器中我们有redis并且没有任何事情发生。 第一份工作没有问题,工作正常,但第二份工作没有发生任何事情。我也试过了Artisan::call,没有运气。如果我试着在事件处理程序中添加像Log::error("Test for queue handler");之类的简单代码,这将毫无问题地工作。

任何建议都将受到赞赏。

0 个答案:

没有答案