xhprof は facebook で開発された PHP のプロファイリングツールです。
今回は導入から実行まで行い、コールグラフ表示までを行います。
Contents
インストール
1 2 3 4 5 6 7 8 9 10 11 |
$ cd /usr/local/src/ $ mkdir xhprof $ cd /usr/local/src/xhprof $ wget http://pecl.php.net/get/xhprof-0.9.4.tgz $ tar zxvf xhprof-0.9.4.tgz $ cd xhprof-0.9.4/extension/ $ phpize $ ./configure $ make $ make install $ php -r "echo phpinfo();" | grep ini |
ログディレクトリを作成
1 2 |
$ mkdir /var/log/xhprof/ $ chmod 0777 /var/log/xhprof/ |
php.iniを編集
1 2 |
$ php -i | grep php.ini $ vi /etc/php.ini |
php.iniを編集
1 2 3 |
[xhprof] extension=xhprof.so xhprof.output_dir="/var/log/xhprof/" |
Apache再起動
1 2 3 |
$ /usr/local/apache2/bin/apachectl restart or $ service httpd restart |
phpinfo()で確認
1 |
$ php -i | grep xhprof |
xhprof使い方
プロファイリングしたい PHP ファイルに下記の記述を追加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// プロファイリングを開始 xhprof_enable(); ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ 処理内容 ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~ // プロファイリングを終了 $xhprof_data = xhprof_disable(); // そのまま出力 var_dump($xhprof_data); // 保存してリンクから確認できるよにする $XHPROF_DIR = {インストールしたXHProfのパス}; include_once $XHPROF_DIR . "/xhprof_lib/utils/xhprof_lib.php"; include_once $XHPROF_DIR . "/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_test"); // URLを生成してアクセスできるようにする(ドキュメントルートにXHProfを配置した場合) echo "<a href="/xhprof_html/index.php?run=$run_id&source=xhprof_test">XHProf結果</a>"; |
graphvizインストール
プロファイル結果のコールグラフを表示する為にgraphvizもインストールします。
CentOS/RHLの場合、 yum でインストールします。
1 |
yum install graphviz |
64 bit の場合は、これではインストールできませんので注意が必要です。
64 bit 版は下記コマンドでインストールできます。
1 |
yum install graphviz.x86_64 |
graphviz-gdをインストール
必要なパッケージもインストールします。
1 |
yum install graphviz-gd |
これでコールグラフが表示できます。
webからアクセスして確認
プロファイル結果をプラウザから閲覧するために、専用ビューアに必要なファイルをコピー
1 |
$ cp -a /usr/local/src/xhprof/xhprof-0.9.4/xhprof_* /doc_root/ |
webからアクセスして確認します。
http://[domain]/xhprof_html/index.php?run=[run_id]&source=xhprof_test
参考資料
pecl
https://pecl.php.net/package/xhprof
phpspot開発日誌
CodeIgniterアプリケーションのボトルネックを計測するXHProfの仕込み方:phpspot開発日誌