XHProfはfacebookが開発したPHP用のプロファイラです。
今回はこのXHProfを使ってPHPプログラムのボトルネックを調べてみましょう。
インストール
PECL :: Package :: xhprof から、ソースコード(xhprof-0.9.3.tgz)をダウンロードしてコンパイルします。
$ tar xvfz xhprof-0.9.3.tgz $ cd xhprof-0.9.0/extension/ $ phpize $ make $ make test $ make install
php.ini 等に出来上がったエクステンションを読みこませるように記述します。
extension=xhprof.so
apacheを再起動させた後、phpinfo() 上に「xhprof」の項目が確認できればインストールは完了です。
プロファイリング
実際にアプリケーションのプロファイリングを行います。
まずはxhprofを実行するライブラリをcomposerで準備します。
$ php composer.phar require facebook/xhprof
あとはアプリケーションのbootstrapファイル等にプロファイリングを行うように記述します。
function __xhprof_save() { $data = xhprof_disable(); $runs = new XHProfRuns_Default(); $runs->save_run($data, '{APPLICATION_NAME}'); }
xhprof_enable(); register_shutdown_function('__xhprof_save');
これでアプリケーションを実行すればプロファイリングが行われるといった感じです。
プロファイリング結果
インストール時にダウンロードしたソースディレクトリ配下にある「xhprof_html」と「xhprof_lib」を
ドキュメントルート配下にコピーし、ブラウザから「xhprof_html」を表示すれば結果を表示できます。
一覧
詳細
コールグラフ
コールグラフを表示したい場合は「Graphviz」が必要になるので、インストールします。
$ sudo apt-get install graphviz
インストールされていればコールグラフを表示することができます。
これでどの部分がボトルネックになっているか一目瞭然です。