XHProf とは
XHProf は、軽量の階層型パフォーマンス測定アナライザーです。データ収集フェーズでは、呼び出し数と測定データを追跡し、プログラムの動的呼び出しの円弧図を表示します。レポート作成や後処理フェーズ中に、経過実行時間、CPU コンピューティング時間、メモリ オーバーヘッドなどの独自のパフォーマンス メトリクスを計算します。
関数パフォーマンスのレポートは、呼び出し元と呼び出し先によって終了できます。データ収集フェーズ中に、XHProf はコール グラフ内のループを通じて再帰関数を検出し、一意の深い名前を割り当てることで再帰呼び出しのループを回避します。
簡単に言えば、XHProf は多くのプログラムのシステム ステータスを収集でき、詳細なチャート情報を提供できる一連のオンライン チャート ツールが付属しています。
インストール
拡張機能パッケージを PECL から直接ダウンロードしてインストールするだけです。他の拡張機能のインストールと何ら変わりはなく、この拡張機能は常に更新および保守されているため、PHP7 バージョンは完全にサポートされています。
コマンド ラインの使用法
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS | XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //xhprof_enable( XHPROF_FLAGS_CPU | XHPROF_FLAGS_MEMORY); //xhprof_enable( XHPROF_FLAGS_MEMORY); //xhprof_enable(); for ($i = 0; $i <= 1000; $i++) { $a = $i * $i; } function test_application(){ for ($i = 0; $i <= 1000; $i++) { $a = $i * $i; } } test_application(); $xhprof_data = xhprof_disable(); print_r($xhprof_data); // Array // ( // [main()==>test_application] => Array // ( // [ct] => 1 // [wt] => 16 // [cpu] => 21 // [mu] => 848 // [pmu] => 0 // ) // [main()] => Array // ( // [ct] => 1 // [wt] => 115 // [cpu] => 115 // [mu] => 1416 // [pmu] => 0 // ) // )
xhprof_enable() を使用してアナライザーを有効にします。パラメータはいくつかの定数であり、大まかに CPU 情報、メモリ情報などを表示することを意味します。パラメータがない場合は、ct と wt の 2 つのパラメータのみが返されます。
xhprof_disable() を呼び出して分析を終了し、分析結果を返します。戻り値には、現在のページのテスト コードのステータスである main 関数の実行ステータスが含まれます。呼び出される関数 test_application() 関数のパフォーマンスもあります。具体的な内容は次のとおりです:
ct: 呼び出し数
wt: 実行までの待機時間 (ミリ秒)
cpu: CPU 実行時間、ミリ秒
mu: メモリ使用量、バイト
pmu: ピーク時のメモリ使用量
はい、とても簡単です。 2 つの関数を呼び出すことで、現在のスクリプト プログラムの実行ステータス、スクリプト プログラムが占有しているメモリ量、および消費している CPU 時間を確認できます。もちろん、より便利なのは、Web ページを通じてさらに詳細な情報を表示することもできることです。
web 結果レポートを見る
まず、いくつかの準備作業を行う必要があります。 1 つ目はグラフィックス描画用のgraphviz をインストールすること、2 つ目は php.ini ファイルの結果保存ディレクトリを変更すること、3 つ目はソース コード内のアナライザー コードをコピーして前のテスト コードを変更することです。
yum install graphviz
CentOS システムでは、yum を使用してgraphviz を直接インストールできます。次に、php.ini ファイルで xhprof の出力ディレクトリを指定します。
xhprof.output_dir=/tmp
次に、ソース コード ファイルの xhporf_html ディレクトリと xhporf_lib ディレクトリをコピーし、プロジェクト ファイルの下に配置する必要があります。次に、コードを変更してパフォーマンス分析の結果を保存します。
// ..... 上面的代码 $xhprof_data = xhprof_disable(); require 'xhprof_lib/utils/xhprof_lib.php'; require 'xhprof_lib/utils/xhprof_runs.php'; $xhprofRuns = new XHProfRuns_Default(); $runId = $xhprofRuns->save_run($xhprof_data, 'xhprof_test'); echo 'http://192.168.56.102/index.php?run=' . $runId . '&source=xhprof_test';
次に、xhporf_html でサーバーをセットアップする必要があります。ここでは、単純な php -S コマンドを使用してサーバーを実行します。
cd xhprof_html/ php -S 0.0.0.0:80
最後に、上記のリンク出力を使用してこのページにアクセスすると、関連情報を確認できます。
概要
今日のテスト コードは、xhporf の使用方法を簡単に紹介するものです。実際、この拡張機能と分析ツールのセットは、実際のプロジェクトのフレームワークに統合できます。このようにして、テスト環境での現在のプログラムの実行ステータスを適切に監視できます。ただし、正式な環境での使用はまだ推奨されていません。結局のところ、デバッグなどのパフォーマンス解析は外部に公開すべきではなく、正式な環境ではコマンドラインで解析やチューニングを行うことができます。
テスト コード:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202006/source/%E7%AE%80%E5%8D%95%E5%AD%A6%E4%B9%A0PHP%E4%B8%AD%E7%9A%84%E5%B1%82%E6%AC%A1%E6%80%A7%E8%83%BD%E5%88%86%E6%9E%90%E5%99%A8.php
推奨学習: php ビデオ チュートリアル