分析器

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 5.2,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

分析器

分析器功能强大开发工具它提供了关于任何请求执行的详细信息。从来没有在生产环境中启用概要分析器,因为它将导致项目中的主要安全漏洞。

安装

在使用欧宝娱乐app下载地址Symfony Flex,执行此命令安装分析器欧宝娱乐app下载地址Symfony包使用前:

1
开发symfony/profiler-pack欧宝娱乐app下载地址

现在,在开发环境中浏览应用程序的任何页面,让分析器收集信息。然后,单击注入到页面底部的调试工具栏的任何元素,打开Symfony Profiler的web界面,它看起来像这样:欧宝娱乐app下载地址

请注意

调试工具栏只注入到HTML响应中。对于其他类型的内容(例如API请求中的JSON响应),剖析器URL可在X-Debug-Token-LinkHTTP响应头。浏览/ _profilerURL查看所有配置文件。

以编程方式访问分析数据

大多数情况下,使用基于web的界面访问和分析分析器信息。类提供的方法还可以以编程方式检索分析信息分析器服务。

响应对象可用时,使用loadProfileFromResponse ()方法来访问其关联的配置文件:

1 2
/ /……$profiler是'profiler'服务配置文件分析器->loadProfileFromResponse (响应);

当分析器存储关于请求的数据时,它还与它关联一个令牌;该令牌可在X-Debug-Token响应的HTTP报头。使用此令牌,您可以访问任何过去响应的配置文件loadProfile ()方法:

1 2
令牌响应->->get (“X-Debug-Token”);配置文件分析器->loadProfile (令牌);

提示

的值时,如果启用了分析器,但未启用web调试工具栏,请使用浏览器的开发人员工具检查页面以获得X-Debug-TokenHTTP报头。

分析器服务还提供find ()方法根据某些标准查找令牌:

1 2 3 4 5 6 7 8 9 10 11
//获取最新的10个令牌令牌分析器->找到(10);//获取包含/admin/的所有URL的最新10个令牌令牌分析器->找到(“/ admin /”10);//获取本地POST请求的最新10个令牌令牌分析器->找到(“127.0.0.1”10“职位”);//获取2到4天前发生的请求的最新10个令牌令牌分析器->找到(10“4天前”“两天前”);

数据收集器

分析器使用一些称为“数据收集器”的服务来获取信息。欧宝娱乐app下载地址Symfony附带了几个收集器,用于获取有关请求、日志记录器、路由、缓存等的信息。

运行这个命令来获得应用程序中实际启用的收集器列表:

1
PHP bin/控制台调试:container——tag=data_collector

你也可以创建自己的数据收集器存储应用程序生成的任何数据,并在调试工具栏和分析器web界面中显示。

计时应用程序的执行

如果您希望度量某些任务在应用程序中花费的时间,则不需要创建自定义数据收集器。相反,使用内置实用程序配置Symfon欧宝娱乐app下载地址y应用程序

提示

考虑使用专业的侧写器,比如黑焰详细地测量和分析应用程序的执行情况。

有条件地启用分析器

谨慎

在Symfony 4.0中取消了使用匹配器有条件地启用剖析器的可能性。欧宝娱乐app下载地址

欧宝娱乐app下载地址Symfony Profiler不能使用匹配器有条件地启用/禁用,因为这个特性在Symfony 4.0中被删除了。但是,您可以使用使()而且禁用()方法分析器类以编程方式管理分析器:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用欧宝娱乐app下载地址组件HttpKernel分析器分析器/ /……DefaultController/ /……公共函数someMethod(?分析器分析器// $profiler不会被设置如果你的环境没有profiler(如prod,默认情况下)如果= = !分析器) {//如果它存在,禁用这个特定控制器动作的分析器分析器->禁用();}/ /……}}

为了将分析器注入到控制器中,您需要创建一个指向现有分析器的别名分析器服务:

  • YAML
  • XML
  • PHP
1 2 3
#配置/ services_dev.yaml服务:欧宝娱乐app下载地址Symfony \分析器组件\ HttpKernel \ \分析器:“@profiler”

AJAX请求后更新Web调试工具栏

单页面应用程序(SPA)是通过动态重写当前页面而不是从服务器加载整个新页面来与用户交互的web应用程序。

默认情况下,调试工具栏显示初始页面加载的信息,并且在每次AJAX请求后不刷新。但是,您可以设置欧宝娱乐app下载地址Symfony-Debug-Toolbar-Replace头的值1在对AJAX请求的响应中强制刷新工具栏:

1
响应->->集(“欧宝娱乐app下载地址Symfony-Debug-Toolbar-Replace”1);

理想情况下,这个头应该只在开发期间设置,而不是在生产中设置。要做到这一点,创建一个事件订阅者然后听kernel.response事件:

12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用欧宝娱乐app下载地址组件HttpKernel事件ResponseEvent/ /……公共函数onKernelResponse(ResponseEvent事件如果(!->getKernel ()->isDebug ()) {返回;}请求事件->getRequest ();如果(!请求->isXmlHttpRequest ()) {返回;}响应事件->getResponse ();响应->->集(“欧宝娱乐app下载地址Symfony-Debug-Toolbar-Replace”1);}
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。