stevad/yii2-xhprof

用于对 Yii Framework 2.x 应用程序进行性能分析的简单扩展,基于 Facebook XHProf

1.1.1 2019-11-15 12:04 UTC

This package is auto-updated.

Last update: 2024-09-15 22:17:05 UTC


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。