ホームページ  >  記事  >  バックエンド開発  >  PHP で階層プロファイラーを使用する方法

PHP で階層プロファイラーを使用する方法

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-01 17:20:031502ブラウズ

この記事では、PHP の階層型パフォーマンス アナライザーについて簡単に紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

PHP で階層プロファイラーを使用する方法

PHP では、デバッグが必要な場合、通常、memory_get_usage() を使用してメモリ使用量を確認します。ただし、現在のスクリプトの CPU 使用率を確認したい場合、既製の関数はありません。

ただし、PHP には、FaceBook によってオープンソース化された拡張機能である XHProf という拡張機能も提供されており、現在のスクリプトの実行時のパフォーマンス状況を確認するのに役立ちます。

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 &#39;xhprof_lib/utils/xhprof_lib.php&#39;;
require &#39;xhprof_lib/utils/xhprof_runs.php&#39;;

$xhprofRuns = new XHProfRuns_Default();
$runId = $xhprofRuns->save_run($xhprof_data, &#39;xhprof_test&#39;);

echo &#39;http://192.168.56.102/index.php?run=&#39; . $runId . &#39;&source=xhprof_test&#39;;

次に、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 ビデオ チュートリアル

以上がPHP で階層プロファイラーを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。