1、编译安装
wget http://pecl.php.net/get/xhprof-0.9.4.tgz
tar zxf xhprof-0.9.2.tgz
cd xhprof-0.9.2/extension/
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
sudo make
sudo make install
说明
- 我的版本是0.9.4,要使用其它版本,可以直接访问 http://pecl.php.net 搜索xhprof
- 解压之后,切换目录到解压目录的extension中,执行phpize,如果不能执行,尝试sudo phpize
- phpize命令找不到的话,执行 yum -y install php-devel php-pear gcc gcc-c++ autoconf automake 安装
- ./configure –with-php-config=/usr/bin/php-config 等号后的路径是php-config的路径,如果你不知道路径,可以使用 find / -name php-config 命令搜索
2、配置PHP支持xhprof
在php.ini底部添加如下内容:
[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp/xhprof
说明
- /tmp/xhprof 这个路径可以随意指定,但是必须要保证改路径已经存在
- 需要将该目录写权限放开,执行 chmod 777 /tmp/xhprof ,否则可能会报以下类似错误:
Warning: fopen(/tmp/xhprof/4fffc57f6fa9e.xhprof_foo) [function.fopen]: failed to open stream: Permission denied in/export/data/www/search.360buy.com/xhprof_lib/utils/xhprof_runs.php on line 135
3、配置程序目录
将xhprof解压目录中的 xhprof_lib 和 xhprof_html 两个目录复制到web可以访问到的位置。我在站点里建立了一个文件夹,起名叫xhprof,两个目录移动到这个目录中。
4、在程序中加入相应代码
<?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 "/var/www/html/xhprof/xhprof_lib/utils/xhprof_lib.php";
include_once "/var/www/html/xhprof/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);
注意
- 我的站点目录在 /var/www/html ,所以include_once 的路径就是那样了,你要根据你的情况来写
5、访问你的PHP程序
访问上一步的程序,会输出runid,然后访问xhprof里的html目录:找到对应的runid点击就可以查看数据收集结果。
我的程序访问:http://域名或者ip/xhprof/xhprof_html
下面是一些参数说明:
- Inclusive Time 包括子函数所有执行时间。
- Exclusive Time/Self Time 函数执行本身花费的时间,不包括子树执行时间。
- Wall Time 花去了的时间或挂钟时间。
- CPU Time 用户耗的时间+内核耗的时间
- Inclusive CPU 包括子函数一起所占用的CPU
- Exclusive CPU 函数自身所占用的CPU
6、查看图像化界面结果
点击结果页的 [View Full Callgraph] 链接,可以查看图形结果,非常直观。
如果报一下错误:
failed to execute cmd:" dot -Tpng". stderr:`sh: dot:command not found`
说明没有安装图形化工具Graphviz,执行以下命令安装即可:
yum install graphviz