你和別人同時寫出了一個導出訂單的功能纵搁,你的導出一次用了30分鐘岳悟,別人用了1分鐘队询,那么這里就很明顯的區(qū)分出來了你們代碼的效率派桩。代碼的優(yōu)劣是問題的根源。如果你想找出是什么原因?qū)е麓a執(zhí)行這么慢蚌斩,那么你就要學會怎么分析代碼性能铆惑,找到代碼瓶頸。
除了之前我們所說的可以使用xdebug分析PHP性能之外還可以使用xhprof分析。
Xhprof是facebook開源出來的一個php輕量級的性能分析工具员魏,跟Xdebug類似丑蛤,但性能開銷更低,還可以用在生產(chǎn)環(huán)境中撕阎,也可以由程序開關(guān)來控制是否進行profile受裹。
下載安裝
sudo wget https://codeload.github.com/phacility/xhprof/zip/master -O xhprof.zip
你也可以從 http://pecl.php.net/package/xhprof 這里下載。
注意:
php5.4及以上版本不能在pecl中下載虏束,不支持棉饶。需要在github上下載https://github.com/facebook/xhprof。
另外xhprof已經(jīng)很久沒有更新過了镇匀,截至目前還不支持php7照藻。
cd xhprof-master/
cd extension/
sudo /usr/local/webserver/php-5.6.21/bin/phpize
sudo ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --enable-xhprof
sudo make && make install
修改php.ini
[xhprof]
extension=xhprof.so
xhprof.output_dir=/home/xhprof 定義輸出文件的存放位置
性能測試
關(guān)于xhprof的使用,請參照手冊 http://php.net/xhprof
$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";
//開啟xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
//注冊一個函數(shù)汗侵,當程序執(zhí)行結(jié)束的時候去執(zhí)行它幸缕。
register_shutdown_function(function() {
//stop profiler
$xhprof_data = xhprof_disable();
//沖刷(flush)所有響應(yīng)的數(shù)據(jù)給客戶端
if (function_exists('fastcgi_finish_request')) {
fastcgi_finish_request();
}
$xhprof_runs = new XHProfRuns_Default();
//save the run under a namespace "xhprof_foo"
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
});
//你也可以手動結(jié)束執(zhí)行,保存分析結(jié)果
$xhprof_data = xhprof_disable();
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
echo '<a href="http://' . $_SERVER['HTTP_HOST'] . '/xhprof/xhprof_html/index.php?run=' . $run_id . '&source=xhprof_foo" target="_blank">性能分析</a>';
graphviz
graphviz是一個繪制圖形的工具晰韵,可以更為直觀的讓你查看性能的瓶頸发乔。
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure
make && make install
或者直接使用yum安裝
yum install libpng
yum install graphviz
根據(jù)圖片中的顏色度和箭頭你能很方便的看出是哪一處比較占用時間。
其他
你也可以使用xhprof.io或者xhgui工具來分析你的xhprof結(jié)果宫屠。
下邊是PHP性能分析和PHP性能調(diào)優(yōu)的三篇文章
中文翻譯版:
PHP 性能分析第一篇: Xhprof & Xhgui 介紹
PHP 性能分析第二篇: Xhgui In-Depth
PHP 性能分析第三篇: 性能調(diào)優(yōu)實戰(zhàn)
英文原版:
Profiling PHP Part 1: Intro to Xhprof & Xhgui
Profiling PHP Part 2: Xhgui In-Depth
Profiling PHP Part 3: Practical Performance Tuning
參考資料
xhprof地址 https://github.com/facebook/xhprof
xhprof手冊 http://php.net/xhprof
使用xhprof進行線上PHP性能追蹤及分析 http://avnpc.com/pages/profiler-php-performance-online-by-xhprof?utm_source=tuicool&utm_medium=referral
xhprof.io https://github.com/gajus/xhprof.io
xhgui https://github.com/perftools/xhgui
oneapm http://www.oneapm.com/