目次
冒頭の言葉
Docker 仮想テスト環境の事前構築
1 . xhprof
1.1 プロジェクトをプルします
1.2 プロジェクトをインストールします
1.3 xhprof.so 拡張を追加します
2. xhprof を使用してケースを構築するプロセス
3.3 [View Full Callgraph]
4. 问题点
5. 结束
ホームページ バックエンド開発 PHP7 php7で解析するにはxhprofを使用します

php7で解析するにはxhprofを使用します

Jun 22, 2020 pm 05:39 PM
php

php7で解析するにはxhprofを使用します

冒頭の言葉

これは純粋なドキュメントです。将来必要になった場合はいつでも参照でき、コードを容易にするための分析に xhprof を使用できます。テストと比較分析 (php7 がサポートされています)

推奨チュートリアル: "php チュートリアル"

Docker 仮想テスト環境の事前構築

docker run -it -p 80:80 -v /Users/xxx/Desktop/xhprof:/data phalcon /bin/bash复制代码
ログイン後にコピー

1 . xhprof

サポートのインストール php7 用の xhprof はたくさんありますが、ここでは github.com/longxinH/xh... このプロジェクトを使用します。

1.1 プロジェクトをプルします

git clone https://github.com/longxinH/xhprof.git复制代码
ログイン後にコピー

1.2 プロジェクトをインストールします

cd xhprof/extension/
/usr/server/php7/bin/phpize
./configure --with-php-config=/usr/server/php7/bin/php-config
make && make install复制代码
ログイン後にコピー

1.3 xhprof.so 拡張を追加します

実行後、この 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です。

2. xhprof を使用してケースを構築するプロセス

監視対象のロジックの前に次のコードを埋め込みます

\xhprof_enable();
......$order = new OrderAdepter();$result = $order->getUserOrderByOrderNo(123);
......$xhprof_data = \xhprof_disable();
print_r($xhprof_data);复制代码
ログイン後にコピー

出力:

php7で解析するにはxhprofを使用します

これを見ると、xhprof 拡張機能内の 2 つの関数が呼び出され、出力値の意味がわかりました。

ct 表示 当前这个函数调用的次数,此案例都是1次
wt 表示 函数执行时间的耗时,单位为微秒复制代码
ログイン後にコピー

, 取得した情報はそれほど多くないことがわかりました。たとえば、占有メモリ、CPU、その他の指標も気にすることがよくあります。

\xhprof_enable(
    XHPROF_FLAGS_MEMORY  
    +XHPROF_FLAGS_CPU
    +XHPROF_FLAGS_NO_BUILTINS
);复制代码
ログイン後にコピー

output:

php7で解析するにはxhprofを使用します
  1. # #XHPROF_FLAGS_MEMORY 統計的なメモリ使用量

  2. XHPROF_FLAGS_CPU CPU 使用率の統計

  3. XHPROF_FLAGS_NO_BUILTINS 組み込み関数はカウントされません。この出力では、拡張内の関数が無視されていることがわかります。

関数には 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复制代码
ログイン後にコピー
## が含まれています #実行すると文字列が出力されます。これはファイル識別子として理解できます。 save_run メソッドが実行されたことがわかりましたが、それはどこに保存されましたか?

xhprof.so 拡張機能を導入したときの別の設定を覚えていますか?

はい、xhprof.output_dir 内にあります。パス (ディレクトリを手動で作成する必要があります)

php7で解析するにはxhprofを使用します
興味がある場合は、それを開いて見てください。シリアル化されたオブジェクト情報

3.2 分析結果にアクセスするための別のサービスの構成

php7で解析するにはxhprofを使用します
xhprof プロジェクトの xhprof_html ディレクトリを指します

php7で解析するにはxhprofを使用します
これで、run_id とsave_run のプロジェクト

上部は要求されたインターフェイス インジケーターの概要であり、以下は各呼び出し関数の具体的な実行です。

#フィールド名意味##Calls請求番号##ウォールタイムを含む#呼び出しには、マイクロ秒単位で計算された、サブ関数によって費やされたすべての時間が含まれます#Incl.MemUseサブ関数の実行で使用されるメモリをバイト単位で含みますExcl.MemUseバイト単位で計算された関数実行自体のメモリ ##Incl.PeakMemUseExcl. PeakMemUse

其余后面的 % 结尾均为对应的占比

3.3 [View Full Callgraph]

如果查看调用流程需要安装 graphviz 图形库. 这里我们推荐手动安装 graphviz 2.24.0 这个版本(亲自踩坑,2.40不支持)

 yum -y install libtool-ltdl-develcd /data/graphviz-2.24.0

./configure
make
make install复制代码
ログイン後にコピー
php7で解析するにはxhprofを使用します

红色部分和黄色部分重点关心下,如果感觉只想分析某个流程, 可以点击到某个方法里面再点击【View Full Callgraph】查看图表

4. 问题点

我们在上面使用xhprof的时候发现了强依赖, 在代码中引入了 xhprof 安装包里的几个类.

include_once  '/data/xhprof-master/xhprof_lib/utils/xhprof_lib.php';
include_once  '/data/xhprof-master/xhprof_lib/utils/xhprof_runs.php';复制代码
ログイン後にコピー

这里我们可以使用composer包引用来实现相同功能, 这里推荐引入 pbweb/xhprof 包。

5. 结束

希望大家工作开心

以上がphp7で解析するにはxhprofを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

See all articles
#Excl. Wall Time関数自体の実行にかかる時間 (サブツリーの実行時間を除く、マイクロ秒単位で計算)
CPU を含む呼び出しを含む サブ関数によって費やされたすべての CPU 時間
CPU を除く関数自体の実行に費やされた CPU 時間 (サブツリーの実行時間を除く、マイクロ秒単位で計算)
Incl.MemUseのピーク値
Excl.MemUse のピーク