php性能監測模塊XHProf

linux 一,什麼是XHProf XHProf是一個分層PHP性能分析工具。它報告函數級別的請求次數和各類指標,包括阻塞時間,CPU時間和內存使用狀況。一個函數的開銷,可細分紅調用者和被調用者的開銷,XHProf數據收集階段,它記錄調用次數的追蹤和包容性的指標弧在動態callgraph的一個程序。它獨有的數據計算的報告/後處理階段。在數據收集時,XHProfd經過檢測循環來處理遞歸的函數調用,並經過給遞歸調用中每一個深度的調用一個有用的命名來避開死循環。XHProf分析報告有助於理解被執行的代碼的結構,它有一個簡單的HTML的用戶界面( PHP寫成的)。基於瀏覽器的性能分析用戶界面能更容易查看,或是與同行們分享成果。也能繪製調用關係圖。javascript

二,安裝XHProf擴展模塊 1,安裝 查看複製打印? wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar zxvf xhprof-0.9.2.tgz
cp ./xhprof-0.9.2.tgz ./www //xhprof自身帶有一個web版的分析頁面,放到個人web服務器下面
cd xhprof-0.9.2/extension
/usr/local/php/bin/phpize
./configure --enable-xhprof --with-php-config=/usr/local/php/bin/php-config
make && make install
2,配置 查看複製打印? [xhprof]
extension=xhprof.so
xhprof.output_dir=/home/zhangy/xhprof //若是不加存放目錄的話,默認是放在/tmp下面
三,XHProf測試 前面咱們說過了,XHProf自身帶有一個web版的測試工具,裏面還有一個小例子。看一下這個例子,我作了一點修改和註釋 查看複製打印?php

<?php function bar($x) { if ($x > 0) { bar($x -1); } } function foo() { for ($idx = 0; $idx < 5; $idx++) { bar($idx); $x = strlen("abc"); } } //啓動xhprof xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); //調用foo函數,也是咱們要分析的函數 foo(); //中止xhprof $xhprof_data = xhprof_disable(); //取得統計數據 print_r($xhprof_data); $XHPROF_ROOT = realpath(dirname(__FILE__) . '/..'); include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php"; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php"; //保存統計數據,生成統計ID和source名稱 $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); //source名稱是xhprof_foo //彈出一個統計窗口,查看統計信息 echo "<script language='javascript'>window.open('../xhprof_html/index.php?run=" . $run_id . "&source=xhprof_foo');</script>"; ?> html

如下是部分的結果: 查看複製打印? [foo==>bar] => Array
(
[ct] => 5 //bar()這個函數被調用了5次
[wt] => 63 //每次運行bar()所要的時間,不知道這個是否是平均值
[cpu] => 0 //每次運行bar(),cpu運算時間
[mu] => 2860 //每次運行bar(),php所使用內存的改變
[pmu] => 0 //每次運行bar(),php在內存使用最高峯時,所使用內存的改變
)java

windows下安裝 須要升級到php5.3以上 最好5.3.3 這個是前提 以後下面步驟 [步驟] 先要下載xhprof for windows版本,這個沒得說,地址:http://www.benjamin-carl.de/?download=XHProf-0.10.0-PHP-5.3.3-VC6-x86-TS,下載的zip文件解壓縮後是一個dll文件,直接放到php的ext目錄裏面就能夠了linux

而後要把xhprof的兩個包含了調試輸出頁面的子目錄安置好,這裏我選擇了直接安置在本身網站發佈位置的根目錄裏,也就是apache默認的htdocs的目錄裏面,我這裏的htdocs是轉移到另一個開發U盤上的,方便在不一樣的地方編制代碼,分別是xhprof_html、xhprof_lib、xprof_log,其中xhprof_html和xhprof_lib是從下載的xhprof源代碼文件包裏獲得的,包所在站點:http://pecl.php.net/package/xhprof,xhprof下載地址:http://pecl.php.net/get/xhprof-0.9.2.tgz,而後自行在htdocs裏建立xprof_log文件夾,這個文件夾是用來存放頁面分析數據的。web

因爲個人Apache+php已經徹底調試好,因此要處理的只有php.ini文件,開啓辦法很簡單,在該文件的末尾加上以下代碼便可: [xhprof] extension=php_xhprof.dll ; directory used by default implementation of the iXHProfRuns ; interface (namely, the XHProfRuns_Default class) for storing ; XHProf runs. xhprof.output_dir="M:/htdocs/xhprof_log" 「提示:xhprof.output_dir=這個使用於設置性能分析數據存放位置的,我這裏應爲htdocs在M盤,故設置爲M:/htdocs/xhprof_log,也就是上述的目錄位置」 添加成功後,能夠重啓Apache看看phpinfo()信息中是否包含了xhprof的段,有的話,那就安裝成功了,提示:以cgi方式運行的php修改了php.ini之後,能夠直接運行phpinfo()查看結果,apache

相關文章
相關標籤/搜索