linux PHP7环境安装性能分析工具xhprof扩展及使用

前言

性能分析是衡量应用程序在代码级别的相对性能。性能分析将捕捉的事件包括:CPU的使用,内存的使用,函数的调用时长和次数,以及调用图,性能分析的行为也会影响应用性能。

在PHP的世界里,有两个截然不同的性能分析器-----主动和被动

主动 vs 被动性能分析
XDebug是一种主动分析器,在开发过程中使用,由开发人员启用。主动分析器收集的信息比被动分析器多,对性能的影响较大。通常不能应用宇生成环境中。

XHprof(本文主角)是一种被动分析器,由Facebook推出。是为了在生产环境中使用而打造的。它对应用性能的影响最小,同时可收集足够多的信息用于诊断性能问题。

PHP7编译安装xhprof扩展

# xhprof官方扩展暂不兼容php7,使用第三方
git clone https://github.com/longxinH/xhprof
cd xhprof/extension/
phpize
./configure --with-php-config=/Data/apps/php/bin/php-config
make && sudo make install
#由于每个人的环境不同,phpize命令和php-config、php.ini的路径可能不同
#这里介绍一个找文件强大的命令:locate  ,具体参考(https://www.cnblogs.com/xqzt/p/5426666.html)
#编译安装完成后,编辑php.ini
locate php.ini
sudo vi ****/****/php.ini
#在php.ini文件中增加extension=xhprof.so
#重启php和nginx
#查看是否已经安装xhprof扩展
php -m | grep xhprof
#有输出则代表安装成功

xhprof实战应用

使用起来很简单,在你需要测试的代码的首尾各添加xhprof_enable()和xhprof_disable()就好了

1 <?php
 2 // cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
 3 // 如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY 
 4 xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
 6 // 要测试的php代码
 9 $data = xhprof_disable();   //返回运行数据
11 // xhprof_lib在下载的包里存在这个目录,记得将目录包含到运行的php代码中
12 include_once "xhprof_lib/utils/xhprof_lib.php";  
13 include_once "xhprof_lib/utils/xhprof_runs.php";  
15 $objXhprofRun = new XHProfRuns_Default(); 
17 // 第一个参数j是xhprof_disable()函数返回的运行信息
18 // 第二个参数是自定义的命名空间字符串(任意字符串),
19 // 返回运行ID,用这个ID查看相关的运行结果
20 $run_id = $objXhprofRun->save_run($data, "xhprof");
21 var_dump($run_id);