Symfony v3.4项目,具有多个已定义的侦听器/订户,用于各种目的。它们与kernel.request
和kernel.controller
事件相关。
我注意到,Symfony的探查器工具发出的任何请求以及Symfony正在预热代码缓存时也会触发所有这些请求。
真的是那样吗? 当页面请求来自Profiler时,是否有一种不错的方式可以不触发已定义的kernel。*事件(至少是特定事件)?最好的方法是什么?
关于排除预热方面的事件-我认为,如果不进行所有预热等操作,预热将会更快,因此开发会稍快一些。
我在这里看到了一个更早回答的问题:How to prevent Symfony profiler from accessing or executing a listener,但是在我的用例中似乎要做很多工作-更改系统中所有现有的控制器。 另外,其他提供的注释/补丁似乎并不是处理此问题的好方法。感谢您的任何见识。
答案 0 :(得分:0)
很遗憾,这是不可能的,因为WebProfilerBundle
依赖于symfony's event system
由于探查器路由以_
前缀开头,因此您可以使用以下命令将其忽略:
$route = $event->getRequest()->attributes->get('_route');
if (strpos($route, '_') === 0) {
return;
}
_twig_error_test ANY ANY ANY /_error/{code}.{_format}
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler_open_file ANY ANY ANY /_profiler/open
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css