Symfony kernel.terminate事件运行命令或服务异步

时间:2018-05-28 14:26:05

标签: symfony event-listener

我想在kernel.terminate事件上执行我的服务以使其异步。 在返回响应之前我在控制器中做的是这个

$this->eventDispatcher->addListener(KernelEvents::TERMINATE, function (PostResponseEvent $event) use ($vat) {
    // Launch the job
    $command = new WebDriverCommand();
    $command->setContainer($this->container);
    $input = new ArrayInput(array('id' => $vat->getId()));
    $output = new NullOutput();
    $command->run($input, $output);

});

我的问题是:运行执行我的服务 AND 的命令之间是否存在差异没有命令直接调用服务? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

绝对没有区别。无论如何,你的命令必须没有任何逻辑。无论如何,事件监听器和命令都应该调用服务 - 在框架和域逻辑之间是一种粘合剂。

您的课程实际上更容易进行单元测试和维护。