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