at_yasu's blog

ロード的なことを

XDebug でパフォーマンスチューニング

タイトル通り。

ちなみに私はMAMP使ってますけど、多分他のLAMPとかでも行ける。

MAMP で XDebug を使う方法は、 http://geek.michaelgrace.org/2011/08/xdebug-cachegrind-and-mamp-on-mac-osx/ とか見て。 てか書きたいことは全部ここに書いてる。

MAMP のバージョンは2.0.1。

  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"
  1. MAMP リスタート

    MAMP にアクセスする度に、 /tmp に cachegrind.out~ というファイルが作成されます。作成されていればok。

    この cachegrind.out~ ってのはXdebugがプロファイリングした結果のファイルです。生で見たら何となく分かるような状態のフォーマットですが、人が見て理解するには程遠いですので https://github.com/jokkedk/webgrind を入れてちょっとだけでも見やすくします。

  2. webgrind を Githubから任意のディレクトリに落としてきて、MAMPの設定でそこへ向けさせる

    別にMAMPでなくてもいいのですが、むしろMAMP以外のほうがいいのですが、割と面倒なので。

    あ、でも、MAMP Pro だと Virtual Hostの設定で、切り替えができるみたいだよ☆

    (コマンドラインで一発で変えられるのを作ってもうたがな…)

  3. アクセス

    アクセスすればプロファイル結果が見れて、どこが重いかが見れます。

まぁ、大体はキャッシュせずに無駄にDBへアクセスしてたりするのが原因だったりするんですがねHAHAHA……orz

参考