分析器

5.2版本
维护 没有维护的

分析器

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

安装

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

1
美元编写器需要——dev symfony/prof欧宝娱乐app下载地址iler-pack

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

_images / web-interface.png

请注意

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

以编程方式访问分析数据

大多数情况下,探查器信息是通过其基于web的界面来访问和分析的。控件提供的方法也可以以编程的方式检索分析信息分析器服务。

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

/ /……$profiler是“profiler”服务美元的概要文件=美元分析器->loadProfileFromResponse(美元的反应);

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

美元的令牌=美元的反应->->得到(“X-Debug-Token”);美元的概要文件=美元分析器->loadProfile(美元的令牌);

提示

当profiler被启用而不是web调试工具栏时,用浏览器的开发人员工具检查页面以获得X-Debug-TokenHTTP报头。

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

//获取最新的10个token美元的符号=美元分析器->找到(,,10,,,);//获取包含/admin/的所有URL的最新10个令牌美元的符号=美元分析器->找到(,“/ admin /”,10,,,);//获取本地POST请求的最新10个令牌美元的符号=美元分析器->找到(“127.0.0.1”,,10,“职位”,,);//获取2到4天前发生的请求的最新10个令牌美元的符号=美元分析器->找到(,,10,,4天前的,2天前的);

数据收集器

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

运行这个命令来获得在你的应用中启用的收集器列表:

1
美元PHP bin/console调试:容器——标签=data_collector

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

应用程序执行的时间安排

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

提示

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

有条件地启用Profiler

谨慎

Symfony 4.0中删除了使用匹配器来有条件地启用分析器的可能性。欧宝娱乐app下载地址

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

使用欧宝娱乐app下载地址Symfony \ \ HttpKernel \分析器\分析器组件;/ /……DefaultController{/ /……公共函数someMethod(吗?分析器美元分析器){//如果你的环境没有分析器,$profiler将不会被设置(如prod,默认)如果(= = !美元分析器){//如果存在,为这个特定的控制器动作禁用profiler美元分析器->禁用();}/ /……}}

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

  • YAML
    1 2 3
    #配置/ services_dev.yaml服务:欧宝娱乐app下载地址Symfony \ \ HttpKernel \分析器\分析器组件:“@profiler”
  • XML
    1 2 3 4 5 6 7 8 9 10 11
    < !——配置/ services_dev.xml >< ?encoding="UTF-8"<容器xmlns =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services”xmlns: xsi =“http://www.w3.org/2001/XMLSchema-instance”xsi: schemaLocation =“http://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/serviceshttps://欧宝娱乐app下载地址www.oldmanjams.com/schema/dic/services/services-1.0.xsd”><服务><服务id =“欧宝娱乐app下载地址Symfony \分析器组件\ HttpKernel \ \分析器”别名=“分析工具”/>> < /服务> < /容器
  • PHP
    1 2 3 4
    / /配置/ services_dev.php使用欧宝娱乐app下载地址Symfony \ \ HttpKernel \分析器\分析器组件;美元的容器->setAlias(分析器::,“分析工具”);

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

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

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

美元的反应->->(“欧宝娱乐app下载地址Symfony-Debug-Toolbar-Replace”,1);

理想情况下,这个头应该只在开发过程中设置,而不是在生产过程中设置。为此,创建一个事件订阅者听着kernel.response事件:

使用欧宝娱乐app下载地址Symfony \组件\ HttpKernel \ \ ResponseEvent事件;/ /……公共函数onKernelResponse(ResponseEvent美元的事件){如果(!这个美元->getKernel()->isDebug()){返回;}美元的请求=美元的事件->getRequest();如果(!美元的请求->isXmlHttpRequest()){返回;}美元的反应=美元的事件->getResponse();美元的反应->->(“欧宝娱乐app下载地址Symfony-Debug-Toolbar-Replace”,1);}

这项工作,包括代码样本,是在一个创作共用BY-SA 3.0许可证。