介绍
xhprof是一款facebook 开源的函数级别的非侵入式php性能分析工具。
它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。
相关链接:
http://pecl.php.net/package/xhprof
https://www.php.net/manual/zh/book.xhprof.php
安装
由于xhprof很久未更新,目前原版本只支持php5。
若要在php7上安装xhprof,需要使用他人修改的repo。
放上github仓库地址:https://github.com/longxinH/xhprof
git clone https://github.com/longxinH/xhprof.git
cd xhprof/extension/
/path/to/php7/bin/phpize #phpize地址
./configure --with-php-config=/path/to/php7/bin/php-config
make && sudo make install
xhprof/extension/modules/xhprof.so #文件地址
重启php-fpm
找到php.ini文件,添加xhprof扩展
[xhprof]
extension = xhprof.so
xhprof.output_dir = /tmp/xhprof
这里的xhprof文件目录最好设置为777权限,否则运行时会出错。
配置成功以后,将xhprof文件下的xhprof_html和xhprof_lib复制到网站根目录(若已存在请忽略)。
使用方法
将需要检查性能的代码包裹起来,如下:
<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); #开启xhprof
#要检查性能的代码
dosomethings();
$xhprof_data = xhprof_disable(); #关闭xhprof
include_once '/webroot/xhprof/xhprof_lib/utils/xhprof_lib.php';
include_once '/webroot/xhprof/xhprof_lib/utils/xhprof_runs.php';
$xhprof_runs = new \XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');
查看性能分析
在浏览器中打开http://localhost/xhprof/xhprof_html/index.php页面。
选择查看的文件,即可查看。
为了方便我们更好的查看性能分析,可以添加图形化支持。
安装graphviz
sudo yum install graphviz # centos
sudo apt-get install graphviz #ubuntu
注意,此时需要在php.ini中的禁用函数中移除proc_open函数。
然后点击[View Full Callgraph]进入图形化查看界面,即可查看。
xhprof字段解释
Function Name:函数名
Calls:调用次数
Calls%:方法调用次数在同级方法总调用次数的百分比
Incl.Wall Time(microsec):方法执行花费的时间,包括子方法的执行时间(微秒)
IWall%:方法执行花费的时间百分比
Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法的执行时间(微秒)
EWall%:方法本身执行花费的时间百分比
网友评论