PHP7に対応したXHProfを見つけて動作確認を行ったので記録を残しておきます。
https://github.com/Yaoguais/phpng-xhprof
!! 注意 !!
本家 は正式にPHP7対応を行っていません。
こちらは__有志がPHP7対応を行ったFork版__です。
PHP7 RC1への対応が行われたものがstable版でも動いているだけであって、今後も動作する保証はありません。
自己責任で利用して下さい。
XHProfとは
ボトルネック調査に特化したFacebook製PHPプロファイラです。
詳細はこちらを参考にしてください。
https://quartet-communications.com/info/topics/12238
検証環境
- PHP 7.0.3
- CentOS 6.5
導入手順
以下のプロジェクトが存在している前提で導入を進めます。
composerもグローバルインストールされているものとします。
/var/www/html
└ project
└ index.php
└ bootstrap_xhprof.php
1. XHProfをインストール
$ cd /tmp
$ git clone https://github.com/Yaoguais/phpng-xhprof.git
$ cd phpng-xhprof/
$ phpize
$ make && make test && make install
2. XHProf ExtensionをPHP7に適用
$ cat << EOS > /etc/php.d/xhprof.ini
[xhprof]
extension=phpng_xhprof.so
xhprof.output_dir = /tmp/xhprof
EOS
$ mkdir -m 777 /tmp/xhprof
$ service httpd restart
3. コールグラフ表示に必要なパッケージを導入
graphvizの依存パッケージには既に保守されていないものがあるので、
依存解決出来ないものはyum-skip-brokenで弾く。
$ cd /etc/yum.repos.d/
$ wget http://www.graphviz.org/graphviz-rhel.repo
$ yum -y install yum-skip-broken
$ yum -y --skip-broken install 'graphviz*'
4. プロジェクトにXHProfビューアを導入
$ cd /var/www/html/project
$ composer require facebook/xhprof dev-master
$ cp vendor/facebook/xhprof/xhprof_html/ ../ -rf
$ cp vendor/facebook/xhprof/xhprof_lib/ ../ -rf
4. プロジェクトにデバッグコードを記述
<?php
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/bootstrap_xhprof.php';
<?php
xhprof_enable();
register_shutdown_function(function() {
$data = xhprof_disable();
$runs = new XHProfRuns_Default();
$runs->save_run($data, 'APPLICATION_NAME');
});
補足. 最終的なプロジェクト構成
/var/www/
html
└ project
└ bootstrap_xhprof.php
└ composer.json
└ composer.lock
└ index.php
└ vendor
└ autoload.php
└ ...
└ xhprof_html
└ xhprof_lib
実行
ドメイン部は環境に応じて読み替えてください。
http://192.168.xx.xxx/project にアクセスするとプロファイリングが走ります。
その後、__http://192.168.xx.xxx/xhprof_html__にアクセスすると以下のような画面が表示されます。
リンクを踏むとプロファイリング結果が表示されます。