最後のアップデートが2005年6月前後のxdebugのメモ。PHP4がまだ現役だった頃ですが、既にxdebugは有名だった気がします。
PHP-4.3.11 | c:\php\ |
php.ini | c:\windows\php.ini |
extension_dir | c:\php\extensions\ |
Apache2 | c:\program files\apache group\apache2 |
ダウンロードできます。ただ、Linux版の最新は結構他にも転がってるっぽいんですが(PECL?)、Windows版のバイナリDLLは上記URLの「BINARY SNAPSHOTS (2.0dev)」とかいうとこから落とします。
落としたDLLファイルを、PHPのextension_dirに指定してあるディレクトリにコピー。その後、php.iniに以下の行を付け足します。
extension=... ... extension=xdebug-4.3.6-2.0.0beta1.dll(バージョン部分とかは多少前後有り)
これでApacheを再起動し、phpinfo()を呼び出して xdebug の項目が表示されれば動作完了です。
詳細は下記公式ドキュメント参照。
http://www.xdebug.org/docs/
とりあえず、まずはプロファイル出力ディレクトリを用意しておきます。今回はc:\php\xdebug.profilesというフォルダを作りました。んで、profilingしたいPHPアプリのトップにいつものごとく.htaccessファイルを作って、次のように書いておきます。
php_flag xdebug.profiler_enable on php_value xdebug.profiler_output_dir "C:\php\xdebug.profiles"
php.iniに書いて全体に適用(*1)したい場合はphp.iniに、extensionの指定後、
xdebug.profiler_enable = on xdebug.profiler_output_dir "C:\php\xdebug.profiles"
の用に指定しておきます。
さて、こうすると.htaccess配下のPHPファイルの挙動は全てprofilingされだします。
んで、出力されたプロファイルを解析するツールが必要になるわけです。
公式ドキュメントサイトでも言及されていますが、 CacheGrind というたぐいのツールが使えるそうです。KDE用のKCacheGrindとWindows用のWinCacheGrindがあるそうです。KDEもWindowsも使いたくない場合はPerlScriptでテキストに落とし込むのも一応あるにはあるそうですが。
今回はWindows上で動かしてるので、当然WinCacheGrindというのを使います。
http://sourceforge.net/projects/wincachegrind
WinCacheGrindにプロファイルログを読み込ませると、関数の呼び出し順序や回数、時間などが分かりやすく確認できるのでお奨めです。