お仕事で使っている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がおすすめです。
詳細は下記をどうぞ。
WinCacheGrindをダウンロード
WinCacheGrind download | SourceForge.net
上記よりWinCacheGrindをダウンロードします。exe実行形式なので、ダブルクリックすると実行します。xdebugのログファイルを開くと分析が始まります。
簡単な使い方としては、右側のビューでソートして時間がかかっている処理をあぶり出します。
そして、時間がかかっている項目を選択して、右下のウィンドウの項目をダブルクリックするとその項目の詳細へ飛びます。そこでさらに時間がかかっている項目を絞り込んでみる感じです。
WinCacheGrindは、ちょっと大きなプロファイルログをひらこうとするとすぐに落ちます。。安定性もあんまりなので、出来れば他ソフトを探してみたいところですね。
- 作者: 小川雄大,柄沢聡太郎,橋口誠
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/12
- メディア: 大型本
- 購入: 32人 クリック: 1,065回
- この商品を含むブログ (59件) を見る