PHP性能檢測與優化—XHProf 安裝

PHP性能檢測與優化—XHProf 安裝javascript


XHProf是facebook開源出來的一個php輕量級的性能分析工具,跟Xdebug相似,但性能開銷更低,還能夠用在生產環境中,也能夠由程序開關來控制是否進行profile。php

如下是我在虛擬機上安裝的過程記錄:html

1、安裝lamppjava

在虛擬機上安裝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、安裝xhproflinux

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

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

相關文章
相關標籤/搜索