これは純粋なドキュメントです。将来必要になった場合はいつでも参照でき、コードを容易にするための分析に xhprof を使用できます。テストと比較分析 (php7 がサポートされています)
推奨チュートリアル: "php チュートリアル"
docker run -it -p 80:80 -v /Users/xxx/Desktop/xhprof:/data phalcon /bin/bash复制代码
サポートのインストール php7 用の xhprof はたくさんありますが、ここでは github.com/longxinH/xh... このプロジェクトを使用します。
git clone https://github.com/longxinH/xhprof.git复制代码
cd xhprof/extension/ /usr/server/php7/bin/phpize ./configure --with-php-config=/usr/server/php7/bin/php-config make && make install复制代码
実行後、この so ファイルを導入する必要がありますphp.ini 設定に移動します。
php.ini ファイル パスを表示します。
/usr/server/php7/bin/php --ini Configuration File (php.ini) Path: /usr/server/php7/etc Loaded Configuration File: /usr/server/php7/etc/php.ini Scan for additional .ini files in: /usr/server/php7/etc/php Additional .ini files parsed: (none)复制代码
/usr/server/php7/etc/php.ini を編集します。
[Xhprof] extension=xhprof.so xhprof.output_dir=/data/logs复制代码
php を再起動します。 fpm、つまりCanです。
監視対象のロジックの前に次のコードを埋め込みます
\xhprof_enable(); ......$order = new OrderAdepter();$result = $order->getUserOrderByOrderNo(123); ......$xhprof_data = \xhprof_disable(); print_r($xhprof_data);复制代码
出力:
これを見ると、xhprof 拡張機能内の 2 つの関数が呼び出され、出力値の意味がわかりました。
ct 表示 当前这个函数调用的次数,此案例都是1次 wt 表示 函数执行时间的耗时,单位为微秒复制代码
, 取得した情報はそれほど多くないことがわかりました。たとえば、占有メモリ、CPU、その他の指標も気にすることがよくあります。
\xhprof_enable( XHPROF_FLAGS_MEMORY +XHPROF_FLAGS_CPU +XHPROF_FLAGS_NO_BUILTINS );复制代码
output:
関数には 2 つの出力フィールドがあることがわかりました。メモリ使用量、mu と pmu をカウントします。mu は使用メモリ (バイト) を表し、pmu は使用メモリのピーク値 (バイト) を表します。3. グラフ xhprof もちろん、まだこのままです。グラフの形式がより直感的になることを願っています。パフォーマンスのボトルネックを観察し、その使用方法を見てみましょう。3.1 現時点では、xhprof_lib ライブラリを使用する必要があります。 xhprof ソース コードでは、ディレクトリにはすでに
\xhprof_enable(XHPROF_FLAGS_MEMORY + XHPROF_FLAGS_CPU+XHPROF_FLAGS_NO_BUILTINS); ......$order = new OrderAdepter();$result = $order->getUserOrderByOrderNo(123); ......$xhprof_data = \xhprof_disable(); include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php'; include_once '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php';$xhprof_runs = new \XHProfRuns_Default();$run_id = $xhprof_runs->save_run($xhprof_data, 'your_project');echo $run_id; //output 5cbf25e21fe9b复制代码
xhprof.so 拡張機能を導入したときの別の設定を覚えていますか?
はい、xhprof.output_dir 内にあります。パス (ディレクトリを手動で作成する必要があります)
興味がある場合は、それを開いて見てください。シリアル化されたオブジェクト情報3.2 分析結果にアクセスするための別のサービスの構成これで、run_id とsave_run のプロジェクト
上部は要求されたインターフェイス インジケーターの概要であり、以下は各呼び出し関数の具体的な実行です。
##ウォールタイムを含む | #呼び出しには、マイクロ秒単位で計算された、サブ関数によって費やされたすべての時間が含まれます |
#Excl. Wall Time | 関数自体の実行にかかる時間 (サブツリーの実行時間を除く、マイクロ秒単位で計算) |
CPU を含む | 呼び出しを含む サブ関数によって費やされたすべての CPU 時間 |
CPU を除く | 関数自体の実行に費やされた CPU 時間 (サブツリーの実行時間を除く、マイクロ秒単位で計算) |
サブ関数の実行で使用されるメモリをバイト単位で含みます | |
バイト単位で計算された関数実行自体のメモリ | |
Incl.MemUseのピーク値 | |
Excl.MemUse のピーク |