xhprof安装和使用方法

先去github上把源代码拉下来,地址在这儿:

git@github.com:facebook/xhprof.git

xhprof文件夹下面应该有这几个文件夹:examples, extension, xhprof_html, xhprof_lib,分别是例子,插件,文档和统计页面,库。另外,在xhprof_html里面有个docs文件夹,里面的index.html是很好的关于xhprof的文档,我就是看的这个。

然后按照以下步骤去做:

cd xhprof/extension
which php-config  #记录下php-config的路径,接下来要用。
phpize
./configure --with-php-config=/usr/bin/php-config #此处的地址就是上面你记录下来php-config的地址
make
sudo make install

编译完成安装好之后,还要去修改一下php.ini,在php.ini的最后添加这样一些内容

[xhprof]
extension=xhprof.so
;下面的这个地址是用来保存测量记录的目录,在页面输出测量得到的数据的时候,它会自动到这儿来找输出的文件。
xhprof.output_dir=/tmp

然后重启apache使得php.ini生效

sudo apachectl restart

这时候就xhprof就算是装好了。使用起来很简单,在你需要测试的代码的首尾各添加xhprof_enable()和xhprof_disable()就好了。举个例子:
复制代码

#!/usr/bin/php

xhprof_enable();

foo();


$data = xhprof_disable();
var_dump($data); //此时$data里面保存的数据就是foo()这个函数的运行开销等的数据。

function foo(){
    phpinfo();
}

如果需要在页面显示,那也很简单,xhprof下面有一个xhprof_html的文件夹,你需要让这个文件夹能够让你的浏览器通过http服务访问到。我就放在/var/www里面了,这样的话我访问它的路径就是:

http://localhost/xhprof_html/index.php

当然,对应的测试页面也需要修改:

<?php
// cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
// 如果两个一起:XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);

//要测试的php代码

$data = xhprof_disable();   //返回运行数据
 
// xhprof_lib在下载的包里存在这个目录,记得将目录包含到运行的php代码中
include_once "xhprof_lib/utils/xhprof_lib.php";  
include_once "xhprof_lib/utils/xhprof_runs.php";  
 
$objXhprofRun = new XHProfRuns_Default();

// 第一个参数j是xhprof_disable()函数返回的运行信息
// 第二个参数是自定义的命名空间字符串(任意字符串),
// 返回运行ID,用这个ID查看相关的运行结果
$run_id = $objXhprofRun->save_run($data, "xhprof");
var_dump($run_id);

/**************************
  访问/index.php?run=$run_id&source=test就能够看到一个统计列表了。
 
  1. 其实就是http://localhost/xhprof_html
 
  2. 你会在/tmp里面找到一个类似这样的文件:50f7ed6689205.test.xhprof,第一个部分就是run_id,当然,程序里面的$run_id跟这个是一样的。
     第二个部分的test就是你在save_run里面的第二个参数,第三个部分就是文件后缀不用去管

  3. 例子中,要看到统计列表需要访问的地址就是http://localhost/xhpro_html/index.php?run=50f7ed6689205&source=test
**************************/

function foo(){
    phpinfo();
}

好了,xhprof的安装和使用的介绍就到此为止了。

windows版本的xhprof安装:先要下载xhprof for windows版本,这个没得说,地址:http://www.benjamin-carl.de/?download=XHProf-0.10.0-PHP-5.3.3-VC6-x86-TS,下载的zip文件解压缩后是一个dll文件,直接放到php的ext目录里面就可以了.

然后修改php.ini文件:

        [xhprof]
        extension=php_xhprof.dll
        ; directory used by default implementation of the iXHProfRuns
        ; interface (namely, the XHProfRuns_Default class) for storing
        ; XHProf runs.
        xhprof.output_dir="M:/htdocs/xhprof_log"

        “提示:xhprof.output_dir=这个使用于设置性能分析数据存放位置的,我这里应为htdocs在M盘,故设置为M:/htdocs/xhprof_log,也就是上述的目录位置”


    添加成功后,可以重启Apache看看phpinfo()信息中是否包含了xhprof的段,有的话,那就安装成功了,提示:以cgi方式运行的php修改了php.ini以后,可以直接运行phpinfo()查看结果,而无须重新启动Apache

    好了,至此为止,xhprof已经正确的安装好了。

将xhprof_lib&&xhprof_html相关目录copy到可以访问到的地址
访问 xxx/xhprof_html/index.php?run=$run_id&source=xhprof 就可经看到你的php代码运行的相关情况

下面是一些参数说明
Inclusive Time                 包括子函数所有执行时间。
Exclusive Time/Self Time       函数执行本身花费的时间,不包括子树执行时间。
Wall Time                      花去了的时间或挂钟时间。
CPU Time                       用户耗的时间+内核耗的时间
Inclusive CPU                  包括子函数一起所占用的CPU
Exclusive CPU                  函数自身所占用的CPU


有话要说