超メモ帳(Web式)@復活

統合失調症を患い、はてなからも逃亡。現在、復活のため準備中。


SPONSORED LINK

xdebugとWinCacheGrindを使ったPHPのプロファイル


お仕事で使っているPHPバッチ処理が遅くなってきているので、プロファイルを行ってリファクタリングをしようと思ったので、xdebugとWinCacheGrindを使ったプロファイル方法をメモ。

xdebugのプロファイルを有効化


Windows環境でXAMPPをインストールしている場合は、おそらく既にxdebugはインストールされているはずです。プロファイリングを有効化するにはC:\xampp\php\php.iniにてxdebugを実行可能にするのと、xdebugのプロファイルを有効にする必要があります。

; xdebugを有効化、注意点としてはphp_eacceleratorとは同時に動作しません
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"

; プロファイルログの追記設定。1で有効化。本番環境などで使うとファイルが大きくなりすぎるので注意
xdebug.profiler_append = 0

; プロファイルの有効設定。1にすると有効化
xdebug.profiler_enable = 1

; プロファイルログファイルの出力先
xdebug.profiler_output_dir = "C:\xampp\tmp"

; プロファイルログファイル名と出力形式
xdebug.profiler_output_name = cachegrind.out.%s


xdebug.profiler_output_dirで指定した箇所にログファイルが出力されますので、それをWinCacheGrindで閲覧します。

ログファイルの出力名は初期設定では%pを使用するのですが、これはpidでログファイルをつくるためにスクリプト名で切り分けるのがめんどくさい。ファイル名ごとで出力する%sがおすすめです。

詳細は下記をどうぞ。


Xdebug: Documentation

WinCacheGrindをダウンロード


WinCacheGrind download | SourceForge.net


上記よりWinCacheGrindをダウンロードします。exe実行形式なので、ダブルクリックすると実行します。xdebugのログファイルを開くと分析が始まります。



簡単な使い方としては、右側のビューでソートして時間がかかっている処理をあぶり出します。
そして、時間がかかっている項目を選択して、右下のウィンドウの項目をダブルクリックするとその項目の詳細へ飛びます。そこでさらに時間がかかっている項目を絞り込んでみる感じです。

WinCacheGrindは、ちょっと大きなプロファイルログをひらこうとするとすぐに落ちます。。安定性もあんまりなので、出来れば他ソフトを探してみたいところですね。


パーフェクトPHP (PERFECT SERIES 3)

パーフェクトPHP (PERFECT SERIES 3)

プライバシーポリシー免責事項