层次式性能分析器XHProf

php官方文档 http://php.net/manual/zh/book.xhprof.php

xhprof为facebook开发的php性能分析工具,一个轻量级的分层性能测量分析器。 在数据收集阶段,它跟踪调用次数与测量数据,展示程序动态调用的弧线图。 它在报告、后期处理阶段计算了独占的性能度量,例如运行经过的时间、CPU 计算时间和内存开销。

1.安装

wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar -zxvf xhprof-0.9.4.tgz
cd xhprof-0.9.4/extension/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install

2.修改php.ini(在php.ini添加以下扩展)

extension=xhprof.so
xhprof.output_dir=/tmp/xhprof 

xhprof.output_dir:储存 XHProf 运行数据的默认目录,用于接口 iXHProfRuns(即 XHProfRuns_Default 类)。 确保这个路径存在,且是可写的

3.将源码中的xhprof_html和xhprof_lib 文件夹复制到某个目录下,修改nginx配置,使其能被访问到。
如我是这样做的

cp -r /tmp/xhprof-master/xhprof_lib/  /var/www/xhprof/
cp -r /tmp/xhprof-master/xhprof_html/  /var/www/xhprof/

修改nginx,设置vhost访问/var/www/xhprof

4.重启php-fpm 或 apache
可通过phpinfo()查看是否已经正确安装xhprof扩展

php代码事例

<?php
/*
XHPROF_FLAGS_NO_BUILTINS (integer)
    使得跳过所有内置(内部)函数。 
XHPROF_FLAGS_CPU (integer)
    使输出的性能数据中添加 CPU 数据。 
XHPROF_FLAGS_MEMORY (integer)
    使输出的性能数据中添加内存数据。 
    */
 //启动 xhprof 性能分析器
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS + XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

for ($i = 0; $i <= 1000000; $i++) {
    $a = $i * $i;
}
//停止 xhprof 分析器
$xhprof_data = xhprof_disable();

$XHPROF_ROOT = "/usr/local/php5.6/lib/php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";

$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing");

$url = "http://xhprof.mi-hua.com:90/xhprof_html/index.php?run={$run_id}&source=xhprof_testing";

echo "<a href='{$url}' target='_blank'>{$url}</a>";

当查看[View Full Callgraph],如果提示如下错误,是因为未安装图形化工具依赖包:
failed to execute cmd: ” dot -Tpng”. stderr: `sh: dot: command not found ’
解决方法:

yum install graphviz

Function Name:方法名称。
Calls:方法被调用的次数。
Calls%:方法调用次数在同级方法总数调用次数中所占的百分比。
Incl.Wall Time(microsec):方法执行花费的时间,包括子方法的执行时间。(单位:微秒)
IWall%:方法执行花费的时间百分比。
Excl. Wall Time(microsec):方法本身执行花费的时间,不包括子方法的执行时间。(单位:微秒)
EWall%:方法本身执行花费的时间百分比。
Incl. CPU(microsecs):方法执行花费的CPU时间,包括子方法的执行时间。(单位:微秒)
ICpu%:方法执行花费的CPU时间百分比。
Excl. CPU(microsec):方法本身执行花费的CPU时间,不包括子方法的执行时间。(单位:微秒)
ECPU%:方法本身执行花费的CPU时间百分比。
Incl.MemUse(bytes):方法执行占用的内存,包括子方法执行占用的内存。(单位:字节)
IMemUse%:方法执行占用的内存百分比。
Excl.MemUse(bytes):方法本身执行占用的内存,不包括子方法执行占用的内存。(单位:字节)
EMemUse%:方法本身执行占用的内存百分比。
Incl.PeakMemUse(bytes):Incl.MemUse峰值。(单位:字节)
IPeakMemUse%:Incl.MemUse峰值百分比。
Excl.PeakMemUse(bytes):Excl.MemUse峰值。单位:(字节)
EPeakMemUse%:Excl.MemUse峰值百分比。

注意:
1.需要php的另一扩展ctype
2.目前最新版本xhprof-0.9.4并不支持php7

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值