要分析 PHP 程式的效能,花費時間或 CPU 的使用情況、程式呼叫次數.. 等等,之前都用 APD,現在還有 XHProf 可以用用看。
PHP 效能分析工具 XHProf
XHProf 是 2009年由 Facebook 開發,然後 Open Source 出來的效能分析工具,而且有 GUI 的圖形分析畫面可以參考。
官方網址
- phacility/xhprof: XHProf is a function-level hierarchical profiler for PHP and has a simple HTML based user interface.
- PHP: Xhprof - Manual (Hierarchical Profiler)
- facebook/xhprof - Packagist
- XHProf Documentation (Draft)
XHProf 安裝
- # Debain / Ubuntu Linux
- sudo apt-get install php5-xhprof
- sudo php5enmod xhprof
XHProf 使用說明
- mkdir /tmp/xhprof
- chmod 777 /tmp/xhprof
- 於程式開頭加入:
<?php xhprof_enable(); ?>
- 程式結尾加入:
<?php $xhprof_data = xhprof_disable(); print_r($xhprof_data); // 這就是程式分析結果 ?>
範例
<?php xhprof_enable(); // XHProf start for ($i = 0; $i < 100; $i++) { $t = rand(1, 10); // ... any test code, 假設這邊會有執行超過5秒的程式 } // XHProf end $xhprof_data = xhprof_disable(); // 執行超過5m秒的才印出來 foreach ($xhprof_data as $k => $v) { if ($v['wt'] < 5000) unset($xhprof_data[$k]); else $xhprof_data[$k]['wt'] = $v['wt'] / 1000 . ' msecs'; // ms, 1ms = 0.001 seconds } // 將數值寫入 Apache Log error_log(print_r($xhprof_data, true), 3, '/tmp/xhprof/' . $_SERVER['SCRIPT_NAME'] . '-' . time()); ?>
觀察到的程式效能執行狀況與說明如下:
[main()] => Array ( [ct] => 1 // number of calls. [wt] => 419 // wall/wait time (ms). )
[main()] => Array ( [ct] => 1 // number of calls. [wt] => 419 // wall/wait time (ms). [cpu] => 0 // cpu time. [mu] => 8264 // memory usage (bytes). [pmu] => 0 // peak memory usage. )
XHProf 使用介紹
- facebook/xhprof - Packagist
- Profiling PHP Part 1: Intro to Xhprof & Xhgui
- 如何使用 Xhprof 分析網站效能 (真實案例2)