imhelle / yii2-xhprof-lib
为 Yii Framework 2.x 应用程序提供 XHProf 配置的简单扩展
Requires
- php: >=5.6.0
- yiisoft/yii2: 2.0.*
Requires (Dev)
- yiisoft/yii2-debug: >=2.0.6
This package is not auto-updated.
Last update: 2024-09-21 21:29:46 UTC
README
这是一个使用 XHProf 与 Yii Framework 2.x 简单扩展。这是为 Yii Framework 1.x 提供的 yii-xhprof 扩展的更新版本。
与官方 yii2-debug 扩展捆绑的调试面板。
默认情况下,配置在引导过程中启动,并在 PHP 关闭函数中停止。您可以更改此行为并手动启动和停止分析器。
已测试于 Yii Framework v2.0.6+。
Xhprof 安装
(CentOS)
sudo yum install gcc
cd /www/biglion/general/data/lib/vendor/imhelle/yii2-xhprof-lib/lib/
phpize
./configure
make
make test
sudo make install
sudo yum install graphviz
Yii 扩展安装
此扩展可在 packagist.org 上找到,可以通过以下命令使用 composer 安装:
composer require --dev imhelle/yii2-xhprof.
启用分析器的最小配置
return [ 'bootstrap' => [ 'xhprof' ], 'components' => [ 'xhprof' => [ 'class' => 'imhelle\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' => 'imhelle\xhprof\XHProfPanel' ] ] ], ], ];
注意: xhprof 应在 preload 部分中的 debug 之后,以便能够忽略对调试模块页面的请求。
所需的 XHProf 文件(库文件 - xhprof_lib 和 UI - xhprof_html)可以在以下 GitHub 仓库 中找到。
组件配置
扩展为 Yii 组件提供以下配置选项
enabled- 启用/禁用分析器组件。reportPath- 文件系统路径或路径别名到存储先前的分析器运行的 JSON 文件的目录。默认:@runtime/xhprofmaxReportsCount- 要存储的分析报告数量。默认: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 标志的启用/禁用。默认:true。flagCpu- 用于分析器的 XHPROF_FLAGS_CPU 标志的启用/禁用。默认:false。flagMemory- 用于分析器的 XHPROF_FLAGS_MEMORY 标志的启用/禁用。默认:true。ignoredFunctions- 要在分析期间忽略的函数列表。默认为空。注意:此选项不支持tideways_xhprof扩展。blacklistedRoutes- 应忽略的路线列表。允许通配符*,表示“任何字母数字值以及以下之一:/、.、_、-”。默认:['debug*'](忽略对调试扩展页面的请求)。
XHProf 类配置
扩展组件使用自开发的简单包装器为 xhprof_enable / xhprof_disable 函数:[XHProf 类](https://github.com/imhelle/yii2-xhprof-lib/blob/HEAD/XHProf.php)。此类提供通过 Facebook 的 XHProf 库开始/停止分析、保存报告和获取报告 URL 的功能。
可用配置选项(适用于 configure 方法,见下面示例)
flagNoBuiltins- 用于分析器的 XHPROF_FLAGS_NO_BUILTINS 标志的启用/禁用。默认:true。flagCpu- 用于分析器的 XHPROF_FLAGS_CPU 标志的启用/禁用。默认:false。flagMemory- 用于分析器的 XHPROF_FLAGS_MEMORY 标志的启用/禁用。默认:true。ignoredFunctions- 在分析过程中要忽略的函数列表([xhprof_enable() 函数](https://php.ac.cn/manual/ru/function.xhprof-enable.php))。默认为空。libPath- 到包含xhprof_lib内容的目录的文件系统路径。htmlUrlPath- 包含 XHProf UI 内容(xhprof_html)的目录的 URL 路径。runNamespace- 当前分析运行的预定义命名空间值。
所有选项都可以使用设置器进行更改(例如,setFlagCpu(<value>))。有关更多详细信息,请参阅类的源代码。
手动分析
如果您禁用了自动启动(autoStart 选项)或停止(autoStop 选项),则可以将启动/停止分析器的代码放在代码的任何位置,并通过覆盖或调试面板查看报告和调用图结果。
要手动启动,需要编写以下代码
// create and configure instance of XHProf class \imhelle\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 \imhelle\xhprof\XHProf::getInstance()->run();
要手动停止,需要编写以下代码
// stop profiler and get URLs to results and callgraph $urls = \imhelle\xhprof\XHProf::getInstance()->stop(); // Links: // $urls[\imhelle\xhprof\XHProf::TYPE_REPORT] // $urls[\imhelle\xhprof\XHProf::TYPE_CALLGRAPH]
注意:如果您使用 XHProf 类(带有或没有此扩展),则所有分析结果都可以在 XHProf UI 页面上找到(它是 xhprof 开发者的默认设置)。
PHP 7 和 XHProf 的说明
如果您想使用 PHP 7 的此扩展,可以使用以下分叉版本的 xhprof 扩展:[rustjason/xhprof](https://github.com/rustjason/xhprof)。此扩展已在 PHP 7.1.11 上进行测试,并从提供的存储库构建。
另一个更好的选择是使用官方移植的 xhprof 扩展,由 [tideways.io](https://tideways.io) 提供 - [tideways/php-xhprof-extension](https://github.com/tideways/php-xhprof-extension)。