PHP :: xdebug のインストールと設定

xdebug は、PHP で構築された web アプリケーションをプロファイリングして、ボトルネック調査をするツールです。



インストールと設定

ダウンロード

% wget http://www.xdebug.org/files/xdebug-2.0.4.tgz

展開

% tar xvzf xdebug-2.0.4.tgz

phpize

% cd xdebug-2.0.4
% phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

configure

% ./configure --enable-xdebug

make

% make

xdebug.soをコピー

% sudo cp -i modules/xdebug.so /path/to/php/modules

xdebug.ini 作成

% sudo vi /path/to/conf.d/xdebug.ini
zend_extension = /path/to/php/modules/xdebug.so
xdebug.profiler_enable = 1
xdebug.profiler_output_dir = /var/tmp/xdebug

ここでは xdebug のトレースログを格納するディレクトリとして、/var/tmp/xdebug 作成します。書き込み権限を与えておきます。

% mkdir -m 777 /var/tmp/xdebug

apache リロード

% sudo apachectl graceful

インストールできたか確認

% php -m
  :
  : 
  :
[Zend Modules]
Xdebug

動作確認

適当な php スクリプトをブラウザで呼び出します。
トレースログは「xdebug_profiler_output_dir」で設定したディレクトリ
に出力されます。

トレースログの確認

% ls /var/tmp/xdebug
trace.2043925204.07673c.xt  trace.2043925204.091f32.xt



WinCacheGrind

トレースログをもとにプロファイリングするには「WinCacheGrind」が便利です。

WinCacheGrind
http://sourceforge.net/projects/wincachegrind/

使い方は簡単で、

  1. WinCacheGrind をインストール。
  2. トレースログをローカルPCに保存。
  3. WinCacheGrind でトレースログを読み込む。
  4. きれいなGUI表示でプロファイリング結果を見ることができます。

WinCacheGrindで表示したプロファイリング結果

上記画像はあるwebアプリケーションのプロファイリング結果です。
XMLParser_Base クラスの getXML メソッドの中で呼ばれている file_get_contents 関数に 832ミリ秒かかっていることが分かります。



[注意事項]
Xdebug は内部でかなり重い処理を行ってますので、通常運用時は動作しないようにしておきます。

% sudo vi /path/to/conf.d/xdebug.ini
;zend_extension = /path/to/php/modules/xdebug.so
;xdebug.profiler_enable = 1
;xdebug.profiler_output_dir = /var/tmp/xdebug
% sudo apachectl graceful