PHP中的层次性能分析器的介绍、安装与使用

这篇文章主要介绍“PHP中的层次性能分析器的介绍、安装与使用”,在日常操作中,相信很多人在PHP中的层次性能分析器的介绍、安装与使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP中的层次性能分析器的介绍、安装与使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

简单学习PHP中的层次性能分析器

在 PHP 中,我们需要进行调试的时候,一般都会使用 memory_get_usage() 看下内存的使用情况。但如果想看当前的脚本 CPU 的占用情况就没有什么现成的函数了。不过,PHP 也为我们提供了一个扩展:XHProf ,这是由 FaceBook 开源的一个扩展,它可以帮我们看到当前脚本运行时的一些性能情况。

 

什么是 XHProf

XHProf 是一个轻量级的分层性能测量分析器。在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。函数性能报告可以由调用者和被调用者终止。在数据搜集阶段 XHProf 通过调用图的循环来检测递归函数,通过赋予唯一的深度名称来避免递归调用的循环。

简单来说,XHProf 就是能为我们收集很多程序运行时的系统状态,并且它自带一套在线图表工具,能够为我们提供详尽的图表信息。

 

安装

直接在 PECL 下载安装扩展包即可。和其它的扩展安装并没有什么两样,这个扩展一直在更新维护状态中,所以对于 PHP7 版本都是完美支持的。

 

命令行使用

xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

//xhprof_enable( XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

//xhprof_enable( XHPROF_FLAGS_MEMORY);

//xhprof_enable();

for ($i = 0; $i <= 1000; $i++) {
    $a = $i * $i;
}

function test_application(){
    for ($i = 0; $i <= 1000; $i++) {
            $a = $i * $i;
    }
}

test_application();


$xhprof_data = xhprof_disable();

print_r($xhprof_data);

// Array
// (
//     [main()==>test_application] => Array
//         (
//             [ct] => 1
//             [wt] => 16
//             [cpu] => 21
//             [mu] => 848
//             [pmu] => 0
//         )

//     [main()] => Array
//         (
//             [ct] => 1
//             [wt] => 115
//             [cpu] => 115
//             [mu] => 1416
//             [pmu] => 0
//         )

// )
 

使用 xhprof_enable() 启用分析器,它的参数是几个常量,大概的意思就是显示 CPU 信息、内存信息等,如果没有参数的话则只会返回 ct 、 wt 这两个参数。

调用 xhprof_disable() 结束分析并返回分析结果,返回值的内容包括 main 主函数的运行情况,也就是我们当前页面测试代码的情况。还有调用的函数 test_application() 函数的性能情况。具体内容为:

  • ct:调用次数
  • wt:等待运行时长,毫秒
  • cpu:cpu 运行时长,毫秒
  • mu:内存使用,字节
  • pmu:内存使用峰值

没错,就是这么简单的内容。通过两个函数的调用我们就能看到当前脚本程序的运行状态,占用了多少内存、耗费了多少 cpu 时长。当然,更方便的是,它还可以通过 web 页面显示更为详细的信息。

 

web 查看结果报告

首先,我们需要做一些准备工作。一是要安装一个 graphviz 用于图形绘制,二是修改 php.ini 文件的结果存放目录,三是拷贝源码中的分析器代码并修改一下我们之前的测试代码。

yum install graphviz
 

CentOS 系统中我们直接使用 yum 就可以安装 graphviz 。然后我们在 php.ini 文件中为 xhprof 指定一下输出目录。

xhprof.output_dir=/tmp
 

接下来,我们需要将源码文件中的 xhporf_html 目录和 xhporf_lib 目录拷贝出来放到项目文件下。然后修改代码来保存性能分析的结果。

// ..... 上面的代码
$xhprof_data = xhprof_disable();

require 'xhprof_lib/utils/xhprof_lib.php';
require 'xhprof_lib/utils/xhprof_runs.php';

$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprof_data, 'xhprof_test');

echo 'http://192.168.56.102/index.php?run=' . $runId . '&source=xhprof_test';

 

然后我们需要在 xhporf_html 搭起服务器,在这里我就用简单的 php -S 命令运行起来。

cd xhprof_html/
php -S 0.0.0.0:80
 

最后用上面输出的链接来访问这个页面,就可以看到相关的信息了。

PHP中的层次性能分析器的介绍、安装与使用

到此,关于“PHP中的层次性能分析器的介绍、安装与使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!