XDebug でパフォーマンスチューニング
タイトル通り。
ちなみに私はMAMP使ってますけど、多分他のLAMPとかでも行ける。
MAMP で XDebug を使う方法は、 http://geek.michaelgrace.org/2011/08/xdebug-cachegrind-and-mamp-on-mac-osx/ とか見て。 てか書きたいことは全部ここに書いてる。
MAMP のバージョンは2.0.1。
/Applications/MAMP/bin/php/php5.4.4/conf/php.ini を編集
ファイルの一番下に下記の設定を追加する。 もしくは [Xdebug]という所があれば、そこにある値を下記の設定にならって変更。
[xdebug] zend_extension="/Applications/MAMP/bin/php/php5.4.4/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so" xdebug.profiler_enable = 1 ;xdebug.profiler_output_name = cachegrind.out.%t-%s xdebug.profiler_output_dir = "/tmp"
MAMP リスタート
MAMP にアクセスする度に、 /tmp に cachegrind.out~ というファイルが作成されます。作成されていればok。
この cachegrind.out~ ってのはXdebugがプロファイリングした結果のファイルです。生で見たら何となく分かるような状態のフォーマットですが、人が見て理解するには程遠いですので https://github.com/jokkedk/webgrind を入れてちょっとだけでも見やすくします。
webgrind を Githubから任意のディレクトリに落としてきて、MAMPの設定でそこへ向けさせる
別にMAMPでなくてもいいのですが、むしろMAMP以外のほうがいいのですが、割と面倒なので。
あ、でも、MAMP Pro だと Virtual Hostの設定で、切り替えができるみたいだよ☆
(コマンドラインで一発で変えられるのを作ってもうたがな…)
アクセス
アクセスすればプロファイル結果が見れて、どこが重いかが見れます。
まぁ、大体はキャッシュせずに無駄にDBへアクセスしてたりするのが原因だったりするんですがねHAHAHA……orz
参考