標籤:blog http 使用 檔案 資料 io
原文來自於:http://blog.sina.com.cn/s/blog_665fc8980100l8dq.html
XHProf 是 FaceBook 開發的一個函數層級的 PHP 分層分析器。
資料收集部分是一個基於 C 的 PHP 擴充,分析報告是一系列基於 PHP 的 HTML 導航頁面。
XHProf 能統計每個函數的調用次數、記憶體使用量、CPU佔用等多項重要的資料。
並且 XHProf 還能比較兩個統計樣本,或從多個資料樣本中匯總結果。
XHProf 是分析 PHP 程式執行效率的利器,能讓我們得到更底層的的分析資料。
安裝 XHProf
XHProf 目前的最新版本是 0.92,你可以從它的首頁(http://pecl.php.net/package/xhprof)下載它的最新版本。
例如,我的 Web 目錄是 /data/zivn.me,那麼我可以通過下面的命令來安裝 XHProf 。
查看原始碼
列印?
1 wget http://pecl.php.net/get/xhprof-0.9.2.tgz
2 tar zxf xhprof-0.9.2.tgz
3 cd xhprof-0.9.2
4 cp -r xhprof_html xhprof_lib /data/zivn.me/
5 cd extension
6 phpize
7 ./configure
8 make
9 make install
當然,我們還需要修改 php.ini 來確保 XHProf 的正常運行。
我們需要先建立一個目錄用來儲存分析資料檔案,例如 /data/zivn.me/xhprof/。
查看原始碼
列印?
1 [xhprof]
2 extension=xhprof.so
3 xhprof.output_dir=/data/zivn.me/xhprof/
使用 XHProf
使用 XHProf 非常簡單,我們只需要修改少許代碼即可實現。
例如,我們需要分析代碼執行時關於 CPU 和記憶體的資料。
查看原始碼
列印?
01 xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
02
03 // Test Code Start
04 …………
05 // Test Code End
06
07 $xhprofData = xhprof_disable();
08
09 include_once "/data/zivn.me/xhprof_lib/utils/xhprof_lib.php";
10 include_once "/data/zivn.me/xhprof_lib/utils/xhprof_runs.php";
11
12 $xhprofRuns = new XHProfRuns_Default();
13 $xhprofRuns->save_run($xhprofData, "xhprof");
這樣,當我們運行程式之後,會在 /data/zivn.me/xhprof/ 之中產生分析資料檔案。
檔案名稱類似於 4b4c239a86593.xhprof ,我們可以通過改變 save_run 的參數,來改變檔案尾碼。
由於分析可能會影響響應速度,通常我們會加上一個隨機數,隨機取樣,而不是分析所有使用者請求的執行過程。
查看原始碼
列印?
01 $randKey = mt_rand(1, 10000);
02
03 if ($randKey == 1)
04 {
05 xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
06 }
07
08 // Test Code Start
09 …………
10 // Test Code End
11
12 if ($randKey == 1)
13 {
14 $xhprofData = xhprof_disable();
15
16 include_once "/data/zivn.me/xhprof_lib/utils/xhprof_lib.php";
17 include_once "/data/zivn.me/xhprof_lib/utils/xhprof_runs.php";
18
19 $xhprofRuns = new XHProfRuns_Default();
20 $xhprofRuns->save_run($xhprofData, "xhprof");
21 }
查看 XHProf 分析資料
例如,我的網域名稱是 zivn.me,現在我們就可以通過 web 來查看詳細的分析資料了。