[php]xhprofでプロファイリング

php

最近話題のプロファイラ拡張のxhprofをインストールしてみます。今更かよってツッコミは なしで。CentOS 5.5に入れます。
[shcode]
# GraphVizをインストール(Dot言語をグラフ化するツール)
sudo yum install -y –enablerepo=epel graphviz graphviz-gd

# 最新版のDL,コンパイル(http://pecl.php.net/package/xhprof)
wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar zxf xhprof-0.9.2.tgz
cd xhprof-0.9.2/extension/
phpize
./configure
make
sudo make install
# /usr/lib64/php/modules/ディレクトリ内にxhprof.soが入っている

# プロファイルの溜め場所(なくても動いた気がするけど)
sudo mkdir /var/log/xhprof
sudo chmod 777 /var/log/xhprof/

# 設定ファイルの追加
sudo vim /etc/php.d/xhprof.ini

sudo apachectl graceful
[/shcode]

// /etc/php.d/xhprof.iniの内容

  1. [xhprof]
  2. extension=xhprof.so
  3. ;
  4. ; directory used by default implementation of the iXHProfRuns
  5. ; interface (namely, the XHProfRuns_Default class) for storing
  6. ; XHProf runs.
  7. ;
  8. xhprof.output_dir=/var/log/xhprof

Symfony2のapp_dev.phpにXHProfを導入してみます。
[shcode]
# 専用ビューアに必要なファイルをコピーします
cd xhprof-0.9.2/
cp -a xhprof_* /path-to-root/symfony-sandbox/web/
[/shcode]

app_dev.phpを次のように変更します(URLだけ変えてください:私の場合はsymfony-sandbox.localweb02)
[phpcode]
save_run($xhprof_data, $XHPROF_SOURCE_NAME);

// ビューアへのリンク(お好みで)
echo “xhprof Result\n”;
}

xhprof_enable();
register_shutdown_function(‘__xhprof_finish’);

require_once __DIR__.’/../app/AppKernel.php’;

use Symfony\Component\HttpFoundation\Request;

$kernel = new AppKernel(‘dev’, true);
$kernel->handle(new Request())->send();

[/phpcode]

app_dev.phpで適用なページを表示すると、ページの下部にリンクが現れます(下図はBalibaliBlogBundleを動かしたところ)

プロファイル結果はhttp://www.webpagescreenshot.info/img/792351-1116201060526PMです。
GraphVizのpngデータはhttp://labs.uechoco.com/blog/wp-content/uploads/xfprof_balibali_20101117_0100.png.zipで見れます。

About: uechoco