首页 > 解决方案 > Symfony kernel.terminate 事件异步运行命令或服务

问题描述

我想在 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);

});

我的问题是:运行执行我的服务的命令不使用命令直接调用服务之间有区别吗?提前致谢。

标签: symfonyevent-listener

解决方案


完全没有区别。你的命令无论如何都不能有任何逻辑。无论如何,事件侦听器和您的命令都应该调用服务——成为框架和域逻辑之间的粘合剂。

实际上,您的类将更容易进行单元测试和维护。


推荐阅读