2010-03-22

【系統】Profiling PHP with Xdebug & KCachegrind

0 comments

有時候,網頁都可以正常執行,但就是慢的想讓人吐血。

這時候就可以用 Xdebug 配合 KCachegrind 來看看,到底是慢在那裡。

首先,要裝好 Xdebug ,並且在 php.ini 中,設定啟用。

1. 安裝 Xdebug

# tar zxvf xdebug-2.0.2.gz
# cd xdebug-2.0.2
# ./configure --enable-xdebug --with-php-config=/home/php/bin/php-config
# make
# make install

2. 在 Ubuntu 下安裝 KCachegrind

# sudo apt-get install KCachegrind

3. 在 php.ini 中設定啟用

[xdebug]
zend_extension="/home/php/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.profiler_enable=off
xdebug.profiler_enable=on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.profiler_output_dir="/tmp/xdebug"

4. 接著只要執行網頁就會在 /tmp/xdebug 下產生 cachegrind.out.xxxxx

注意:要測試時,要請其它人都不要執行,某則很難知道那個cachegrind.out 檔是你要的。

5. 接著把 cachegrind.out 檔抓回來,使用 KCachegrind 來查看結果。

載入 cachegrind.out.xxxxx

就可以看到如下圖般詳細的資訊,由其是 Call Graph 的資訊,真是超詳細的。

PS. 記得上線後要把 php.ini 裡的 Xdebug Mark 起來,不然上線會變很慢。

以上,簡單記錄一下。