xhprof--php代码性能追踪及分析

xhprof是什么

XHProf是facebook 开发的一个测试php性能的扩展,本文记录了在PHP应用中使用XHProf对PHP进行性能优化,查找性能瓶颈的方法。

安装Xhprof扩展

$ wget http://pecl.php.net/get/xhprof-0.9.4.tgz
$ tar -zxvf xhprof-0.9.4.tgz 
$ cd xhprof-0.9.4
$ cd extension/
$ phpize
$ ./configure
$ make
$ sudo make install

修改php.ini

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

配置中xhprof.output_dir指定了生成的profile文件存储的位置,我们将其指定为/tmp。

参数

void xhprof_enable ([ int $flags = 0 [, array $options ]] )

  • flags 该参数用于为剖析结果添加额外的信息,该参数的值使用以下宏,如果需要提供多个值,使用|进行分隔。
    XHPROFFLAGSNO_BUILTINS 跳过所有的内置函数
    XHPROFFLAGSCPU 添加对CPU使用的分析
    XHPROFFLAGSMEMORY 添加对内存使用的分析
  • options 数组形式提供可选参数,在此处提供ignored_functions选项需要忽略的函数

安装graphviz工具

sudo apt-get install graphviz

如何使用

假设你现在要看看看自己做的一个网站的首页性能数据,那么你要找到这个网站的首页入口文件,在核心文件加载之前和之后分别加上xhprof的性能测试代码

#开启,具体参数说明可以查看官方文档
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY);

#核心文件的执行
...
require 'index.php'
...

#关闭
$xhprof_data = xhprof_disable();

#这里的路径根据自己的站点来配置
$XHPROF_ROOT = realpath(dirname(__FILE__) .'/');
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();
$xhprof_runs->save_run($xhprof_data, "xhprof");

如何查看结果

  • 把 xhprof-0.9.4 的可以通过浏览器访问,访问里面的xhprof_html/index.php 就会看到id列表,点击查看对应的id查看结果

你可能感兴趣的:(xhprof--php代码性能追踪及分析)