PHPプロファイル環境構築(xdebug+webgrind)

By tanaka - 12/10/01 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

こんにちは。田中です。
サイトのパフォーマンスを上げるためにPHPプロファイルが必要になることがあります。
今回のテーマはphpプロファイルのためのxdebug+webgrind環境構築についてです。
前提条件:サーバーにphpとapacheが入っていること。CentOS5に入れました。

1.xdebugのインストール

peclのパッケージをインストールします。
$ yum install php-pecl-xdebug
次に設定ファイルを作成します。
$ vi /etc/php.d/xdebug.ini

zend_extension=/usr/lib/php/modules/xdebug.so;xdebugを有効にする
xdebug.profiler_enable=1
;パラメータのXDEBUG_PROFILEをトリガーにして実行する
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=/tmp

サーバーのWEBページ全てでプロファイルするとログが大量になるので、
トリガーで実行する状態にしておくと便利です。

2.webgrindのインストール

ソースはこちらからダウンロードします。
DocumentRootの直下に置きます。
/var/www/html/webgrind

3.プロファイル取得

  • http://example.com/?XDEBUG_PROFILE
  • http://example.com/item/list?XDEBUG_PROFILE

のように、実行するページのURL引数を追加
(POST/GET引数、COOKIEでも良い)

  • http://example.com/webgrind

URL直下にwebgrindを入れて表示。

各処理の「Invocation Count」「Total Self Cost」「Total Inclusive Cost」が表示され、
それぞれソートできます。

どこが重くなっているのかは一目瞭然です。

PHP関数も(array_**とか)表示されますが、非表示にすることもできます。
キャッシュファイル名はデフォルトで時間がファイル名に入りますが、
xdebug.iniの設定によってスクリプト名のみのファイル名にすることもできます。

他にもプロファイル方法はあるようですが、MySQL限定のものもあり、
今回PostgreSQLを使っているサイトのプロファイルにあたってはこちらを利用してみました。

関連記事:Xdebugを使い倒す5つのTIPS

Posted in PHP • Tags: , , Top Of Page