PHPのプロファイラー「XHProf」が紹介されていた。
元ネタはphpspot開発日誌より。
前は、XdebugとWinCacheGrindでプロファイルできたが、XHProfだと一度設定すればブラウザだけでプロフィリングできる。チョー便利。
というわけで、早速サーバー(CentOS 5.4)にインストールしてみた。
インストール
1.ソースをダウンロード
cd /root
wget http://pecl.php.net/get/xhprof-0.9.2.tgz
2.makeしてインストール
tar xvfz xhprof-0.9.2.tgz
cd xhprof-0.9.2/extension/
phpize
./configure
make
make install
make test
3.php.iniを編集
vi /etc/php.ini
[xhprof]
extension=xhprof.so
xhprof.output_dir=/var/log/xhprof
4.ログディレクトリを作成して、apache再起動
mkdir /var/log/xhprof/
chmod 777 /var/log/xhprof/
service httpd restart
5.プロファイル結果をプラウザから閲覧するために、専用ビューアに必要なファイルをコピー
cp -a ./xhprof_* /doc_root/xhprof/
6.解析対象となるphpファイルに以下を追加
xhprof_enable(); // start profiling // 処理 $xhprof_data = xhprof_disable(); //stop profiler // プロファイリングページへのリンクを追加 $XHPROF_ROOT = '/doc_root/xhprof'; //xhprofをインストールしたディレクトリ $XHPROF_SOURCE_NAME = ''; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php"; include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, $XHPROF_SOURCE_NAME); echo "<a href=\"http://domain/xhprof/xhprof_html/index.php?run=$run_id&source=$XHPROF_SOURCE_NAME\">xhprof Result</a>\n";
7.xhprofにアクセス
でも [View Callgraph ] にアクセスすると
Error: either we can not find profile data for run_id 4d6adb812f2f2 or the threshold 0.01 is too small or you do not have 'dot' image generation utility installed.
dot というものが足りないらしい。
ググルと Graphviz をインストールすれば良いみたい。
8.Graphviz をインストール
cd /root
wget http://www.graphviz.org/graphviz-rhel.repo
cp graphviz-rhel.repo /etc/yum.repos.d/
yum install graphviz
インストール後は無効化
vi graphviz-rhel.repo
#enabled=1
enabled=0
[View Callgraph ] にアクセスして無事表示できた。
ふぅ。