Centos7安装和使用PHP性能分析工具--xhprof

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

说明

  1. 我的版本是0.9.4,要使用其它版本,可以直接访问 http://pecl.php.net 搜索xhprof
  2. 解压之后,切换目录到解压目录的extension中,执行phpize,如果不能执行,尝试sudo phpize
  3. phpize命令找不到的话,执行 yum -y install php-devel php-pear gcc gcc-c++ autoconf automake 安装
  4. ./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

说明

  1. /tmp/xhprof 这个路径可以随意指定,但是必须要保证改路径已经存在
  2. 需要将该目录写权限放开,执行 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、在程序中加入相应代码


// 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

你可能感兴趣的:(Linux,PHP,centos,php,性能,xhprof)