ちょっと PHP スクリプトの処理速度が気になるところがあって、ボトルネックを調べるために Xdebug を使ってみた。
Xdebug は pecl で一発インストール。
ただ、どういう理屈か知らないけど、モジュールがインストールされるのは、/usr/local/lib/php/extensions/no-debug-non-zts-20060613 の下(FreeBSD 7.0 上の PHP 5.2.9 付属の pecl)
すっきりしないので、ひとつ上にシンボリックリンクを置く。
次に、php.ini に次のディレクティブを追加し、httpd を再起動。
/tmp は誰でも読めるので、テスト環境などでは良いが、本番環境などでは適切なディレクトリを指定する。
採取されるプロファイルデータはは、WinCacheGrind などのツールを使うと分かりやすい。
これ一発で、どのモジュールのどの関数/メソッドが遅いかがすぐ分かった。
用事が済んだら、php.ini の xdebug.profiler_enable = 0 にしておくこと。じゃないと永遠に記録を続けてしまい、いつか /tmp がはじける。
Xdebug は pecl で一発インストール。
pecl install xdebug |
ただ、どういう理屈か知らないけど、モジュールがインストールされるのは、/usr/local/lib/php/extensions/no-debug-non-zts-20060613 の下(FreeBSD 7.0 上の PHP 5.2.9 付属の pecl)
alpine:ooki % pecl version PEAR Version: 1.7.2 PHP Version: 5.2.9 Zend Engine Version: 2.2.0 Running on: FreeBSD alpine.anseilen.org 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Mon Mar 23 22:44:34 JST 2009 root@alpine.anseilen.org:/usr/src/sys/i386/compile/GENERIC i386 |
すっきりしないので、ひとつ上にシンボリックリンクを置く。
cd /usr/local/lib/php/extensions ln -s ./no-debug-non-zts-20060613/xdebug.so ./ |
次に、php.ini に次のディレクティブを追加し、httpd を再起動。
extension=xdebug.so xdebug.profiler_enable = 1 xdebug.profiler_output_dir = /tmp |
/tmp は誰でも読めるので、テスト環境などでは良いが、本番環境などでは適切なディレクトリを指定する。
採取されるプロファイルデータはは、WinCacheGrind などのツールを使うと分かりやすい。
これ一発で、どのモジュールのどの関数/メソッドが遅いかがすぐ分かった。
用事が済んだら、php.ini の xdebug.profiler_enable = 0 にしておくこと。じゃないと永遠に記録を続けてしまい、いつか /tmp がはじける。