PHP性能检测与优化—XHProf 安装

PHP性能检测与优化—XHProf 安装


XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。

以下是我在虚拟机上安装的过程记录:

1、安装lampp

在虚拟机上安装lampp,必须是develop版本的。否则编译是通不过的。我就是因为编译时遇到 include php.h 时就失败了。所以需要先确保下载并安装了 xampp 的 devel packages。下载地址:http://www.apachefriends.org/download.php?xampp-linux-devel-1.7.4.tar.gz,然后解压到安装的目录tar -xvzf file -C /opt。下载 xampp 的 develop包的时候,注意要选择和自己当前的版本一致的 devel 包,因为 php 的扩展编译的时候,会附加版本信息,启动时进行检查,如果不一致,即便能够编译成功,也是不能够使用的。
2、安装xhprof

wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar zxvf xhprof-0.9.2.tgz
cd xhprof-0.9.2
cp -r xhprof_html xhprof_lib /opt/lamp/htdocs #应用程序所在目录,其中xhprof_lib是生成统计数据用到的类库。xhprof_html是查看统计数据的时候,用到的类库。
cd extension
/opt/lampp/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config

sudo make

sudo make install

这时候so文件生成到了/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/这个目录下了。

 

附件:编译过的so文件

 

编译xhprof的时候出了很多问题,比如:

 

这个问题是需要安装http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz和autoconf

可查看http://tech.fblife.com/?p=106

3、修改php.ini配置

vi /opt/lampp/etc/php.ini

[xhprof] 

 extension=xhprof.so 

 xhprof.output_dir=/home/sharexie/xhprof  //如果不加存放目录的话,默认是放在/tmp下面

重启lampp:

/opt/lamp/lamp restart
3、安装graphviz

cd /usr/src

wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz

tar zxf graphviz-2.24.0.tar.gz

cd graphviz-2.24.0

./configure&&make && make install
4、安装libpng

上面的那个工具依赖libpng。到libpng官网down分源码,再次编译一下。

SF.NET上地址是 http://sourceforge.net/projects/libpng/files/libpng15/1.5.1/,我下的是http://sourceforge.net/projects/libpng/files/libpng15/1.5.1/libpng-1.5.1.tar.gz/download
5、安装zlib

6、查看效果

测试代码

 1 <?php
 3     index();
 5     function index(){
 7         phpinfo();
 9         b();
11     }
13     function b(){
15         echo "i love you";
17     }
19     //启动xhprof
21     xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
23     //停止xhprof
25     $xhprof_data = xhprof_disable();
27     //取得统计数据
29     print_r($xhprof_data);
31     $XHPROF_ROOT = realpath(dirname(__FILE__) . '/');
33     echo $XHPROF_ROOT;
35     include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
37     include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
39     include_once $XHPROF_ROOT . "/xhprof_lib/utils/callgraph_utils.php";
41     //保存统计数据,生成统计ID和source名称
43     $xhprof_runs = new XHProfRuns_Default();
45     print_r($xhprof_runs);
47     $run_id = $xhprof_runs->save_run($xhprof_data, "test"); //source名称是xhprof_foo
49     //弹出一个统计窗口,查看统计信息
51     echo "<script language='javascript'>window.open('../xhprof_html/index.php?run=" . $run_id . "&source=test');</script>";
53 ?>

 

 

 

原文地址:https://www.cnblogs.com/fredshare/p/3372805.html