您的位置:首页 > 编程语言 > PHP开发

层次式性能分析器XHProf

2016-06-22 23:21 495 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php