轉:使用XHProf最佳化PHP程式

來源:互聯網
上載者:User

標籤: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 來查看詳細的分析資料了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.