歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> php性能監測模塊XHProf

php性能監測模塊XHProf

日期:2017/2/28 13:57:53   编辑:Linux教程

一,什麼是XHProf

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

二,安裝XHProf擴展模塊

1,安裝

  1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz
  2. tar zxvf xhprof-0.9.2.tgz
  3. cp ./xhprof-0.9.2.tgz./www //xhprof自身帶有一個web版的分析頁面,放到我的web服務器下面
  4. cd xhprof-0.9.2/extension
  5. /usr/local/php/bin/phpize
  6. ./configure --enable-xhprof --with-php-config=/usr/local/php/bin/php-config
  7. make && make install

2,配置

  1. [xhprof]
  2. extension=xhprof.so
  3. xhprof.output_dir=/home/yicheng/xhprof //如果不加存放目錄的話,默認是放在/tmp下面

三,XHProf測試

前面我們說過了,XHProf自身帶有一個web版的測試工具,裡面還有一個小例子。看一下這個例子,我做了一點修改和注釋

  1. <?php
  2. function bar($x){
  3. if($x >0){
  4. bar($x -1);
  5. }
  6. }
  7. function foo(){
  8. for($idx =0; $idx <5; $idx++){
  9. bar($idx);
  10. $x = strlen("abc");
  11. }
  12. }
  13. //啟動xhprof
  14. xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
  15. //調用foo函數,也是我們要分析的函數
  16. foo();
  17. //停止xhprof
  18. $xhprof_data = xhprof_disable();
  19. //取得統計數據
  20. print_r($xhprof_data);
  21. $XHPROF_ROOT = realpath(dirname(__FILE__).'/..');
  22. include_once $XHPROF_ROOT ."/xhprof_lib/utils/xhprof_lib.php";
  23. include_once $XHPROF_ROOT ."/xhprof_lib/utils/xhprof_runs.php";
  24. //保存統計數據,生成統計ID和source名稱
  25. $xhprof_runs =newXHProfRuns_Default();
  26. $run_id = $xhprof_runs->save_run($xhprof_data,"xhprof_foo");//source名稱是xhprof_foo
  27. //彈出一個統計窗口,查看統計信息
  28. echo "<script language='javascript'>window.open('../xhprof_html/index.php?run=". $run_id ."&source=xhprof_foo');</script>";
  29. ?>

以下是部分的結果:

  1. [foo==>bar]=>Array
  2. (
  3. [ct]=>5//bar()這個函數被調用了5次
  4. [wt]=>63//每次運行bar()所要的時間,不知道這個是不是平均值
  5. [cpu]=>0//每次運行bar(),cpu運算時間
  6. [mu]=>2860//每次運行bar(),php所使用內存的改變
  7. [pmu]=>0//每次運行bar(),php在內存使用最高峰時,所使用內存的改變
  8. )

個人覺得,這個工具是給變態人用的,有誰真正測試過,php代碼執行效率?我估計沒有,只要不隨心所欲的寫代碼,差別不是很大,花時間在上面,還不如想想怎麼提高數據庫的處理能力。如果自認為其他方面都做的很好了,在這方面做做也沒關系。

Copyright © Linux教程網 All Rights Reserved