LoginSignup
18
18

More than 5 years have passed since last update.

PHP7でXHProfを利用する方法(暫定版)

Last updated at Posted at 2016-02-04

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. プロジェクトにデバッグコードを記述

index.php
<?php
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/bootstrap_xhprof.php';
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にアクセスすると以下のような画面が表示されます。

XHProf  Hierarchical Profiler Report.png

リンクを踏むとプロファイリング結果が表示されます。

XHProf  Hierarchicat.png

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18