stevad / yii2-xhprof
用于对 Yii Framework 2.x 应用程序进行性能分析的简单扩展,基于 Facebook XHProf
Requires
- php: >=5.6.0
- yiisoft/yii2: 2.0.*
Requires (Dev)
- yiisoft/yii2-debug: >=2.0.6
Suggests
- ext-tideways_xhprof: * - for PHP >= 7.0
- ext-xhprof: * - for PHP < 7.0
README
这是一个用于使用 XHProf 与 Yii Framework 2.x 的简单扩展。这是为 Yii Framework 1.x 扩展 yii-xhprof 的更新版本。
与官方 yii2-debug 扩展捆绑调试面板。
默认情况下,性能分析在引导过程中开始,在 PHP 关闭函数中停止。您可以更改此行为并手动启动和停止分析器。
有关许可信息,请参阅 LICENSE 文件。
已测试于 Yii Framework v2.0.6+。
安装
此扩展可在 packagist.org 获取,可以通过以下命令通过 composer 安装
composer require --dev stevad/yii2-xhprof
.
启用分析器的最小配置
return [ 'bootstrap' => [ 'xhprof' ], 'components' => [ 'xhprof' => [ 'class' => 'stevad\xhprof\XHProfComponent', 'libPath' => '/full/path/to/xhprof_lib', 'htmlReportBaseUrl' => 'http://url.to/xhprof_html', ], ], ];
要使用捆绑的调试面板 - 更新配置如下
return [ 'bootstrap' => [ 'debug', 'xhprof' ], 'components' => [ 'debug' => [ // ... other debug config options ... 'panels' => [ 'xhprof' => [ 'class' => 'stevad\xhprof\XHProfPanel' ] ] ], ], ];
注意: 在 preload
部分中,xhprof
应该在 debug
之后,以便能够忽略对调试模块页面的请求。
所需的 XHProf 文件(库文件 - xhprof_lib
和 UI - xhprof_html
)可以在以下 GitHub 仓库 中找到。
组件配置
扩展为 Yii 组件提供以下配置选项
enabled
- 启用/禁用分析器组件。reportPath
- 存储先前分析运行 JSON 文件的文件系统路径或路径别名到目录。默认:@runtime/xhprof
maxReportsCount
- 要存储的性能分析报告数量。默认:25
。autoStart
- 标志,用于在应用程序引导过程中自动启动分析器。默认:true
。autoStop
- 标志,用于在 PHP 关闭函数中自动停止分析器。默认:true
。forceStop
- 标志,用于在autoStop
禁用且分析器已手动启动且仍在运行时强制停止分析器。默认:true
。triggerGetParam
- 手动触发分析器启动的 GET 参数名称。默认:无值,分析器在每次请求上运行。showOverlay
- 标志,用于在页面显示覆盖层,包含对当前分析运行的报告和调用图链接(如果允许)。如果使用捆绑的 yii2-debug 扩展面板,则不需要设置为true
。默认:true
。libPath
- 直接的文件系统路径或路径别名到包含xhprof_lib
内容的目录。htmlReportBaseUrl
- XHProf UI 内容(xhprof_html
)的 URL 路径。默认:/xhprof_html
(假设您已将此文件夹放在文档根目录内)。flagNoBuiltins
- 启用/禁用分析器 XHPROF_FLAGS_NO_BUILTINS 标志(XHProf 常量)。默认:true
。flagCpu
- 启用/禁用分析器 XHPROF_FLAGS_CPU 标志(XHProf 常量)。默认:false
。flagMemory
- 启用/禁用分析器 XHPROF_FLAGS_MEMORY 标志(XHProf 常量)。默认:true
。ignoredFunctions
- 在分析期间要忽略的函数列表。默认为空。 注意:此选项不受tideways_xhprof
扩展支持。blacklistedRoutes
- 应该被分析器忽略的路由列表。允许使用通配符*
,表示“任何字母数字值以及以下之一:/
、.
、_
、-
。默认:['debug*']
(用于忽略对调试扩展页面的请求)。
XHProf 类配置
扩展组件使用自己开发的简单包装器来处理 xhprof_enable
/ xhprof_disable
函数:XHProf 类。此类提供通过 Facebook 的 XHProf 库开始/停止分析、保存报告和获取报告 URL 的功能。
可用的配置选项(适用于 configure
方法,见下例)
flagNoBuiltins
- 启用/禁用分析器 XHPROF_FLAGS_NO_BUILTINS 标志(XHProf 常量)。默认:true
。flagCpu
- 启用/禁用分析器 XHPROF_FLAGS_CPU 标志(XHProf 常量)。默认:false
。flagMemory
- 启用/禁用分析器 XHPROF_FLAGS_MEMORY 标志(XHProf 常量)。默认:true
。ignoredFunctions
- 在分析期间要忽略的函数列表(xhprof_enable() 函数)。默认为空。libPath
-xhprof_lib
内容所在目录的文件系统路径。htmlUrlPath
- XHProf UI 内容(xhprof_html
)所在目录的 URL 路径。runNamespace
- 当前分析运行的预定义命名空间值。
所有选项都可以通过设置器进行更改(例如 setFlagCpu(<value>)
)。有关更多详细信息,请参阅类的源代码。
手动分析
如果您禁用了自动启动(autoStart
选项)或停止(autoStop
选项),您可以将开始/停止分析器的代码放在代码的任何位置,并通过覆盖或调试面板查看报告和调用图结果。
要手动启动,需要编写以下代码
// create and configure instance of XHProf class \stevad\xhprof\XHProf::getInstance()->configure(array( 'flagNoBuiltins' => true, 'flagCpu' => false, 'flagMemory' => true, 'runNamespace' => 'my-cool-namespace', 'libPath' => '/var/www/html/xhprof/xhprof_lib', 'htmlUrlPath' => 'http://test.local/xhprof/xhprof_html' )); // start profiler \stevad\xhprof\XHProf::getInstance()->run();
要手动停止,需要编写以下代码
// stop profiler and get URLs to results and callgraph $urls = \stevad\xhprof\XHProf::getInstance()->stop(); // Links: // $urls[\stevad\xhprof\XHProf::TYPE_REPORT] // $urls[\stevad\xhprof\XHProf::TYPE_CALLGRAPH]
注意:如果您使用 XHProf
类(带或不带此扩展),所有分析结果都可以在 XHProf UI 页面上找到(这是 XHProf 开发者的默认设置)。
关于 PHP 7 和 XHProf 的说明
如果您想使用此扩展与 PHP 7,可以使用以下分叉版本的 xhprof 扩展:https://github.com/rustjason/xhprof。此扩展已在 PHP 7.1.11 上进行测试,并从提供的存储库构建了扩展。
另一个更好的选择是使用由 tideways.io 官方移植的 xhprof 扩展 - https://github.com/tideways/php-xhprof-extension。
作者
版权所有(c)2015-2018,Stevad。