在我的包中,我想利用该kernel.terminate
事件来刷新一些有关 web 服务 api 调用的统计信息。然而,我没有找到任何资源以最好的方式做到这一点。
GuzzleExceptionListener
在我注入服务的侦听器上(他的角色是拦截每个失败的 Web 服务调用) EntityManger
。:
if ($exception instanceof BadResponseException) {
$entityManager = $this->entityManager;
$dispatcher = new EventDispatcher;
$dispatcher->addListener('kernel.terminate', function (Event $event) use ($entityManager) {
$repository = $entityManager->getRepository("somerepository");
// do some treatment for stats
$entityManager->persist($apicall);
$entityManager->flush();
});
}
的声明GuzzleExceptionListener
:
<service id="my_service" class="%my_class%">
<tag name="kernel.event_listener" event="kernel.exception" method="onKernelException" />
<argument type="service" id="doctrine.orm.entity_manager" />
</service>
无论如何,kernel.terminate
触发事件时不会调用此闭包。为什么 ?是因为它在听众内部吗?