ホームページ  >  記事  >  バックエンド開発  >  PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法

PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法

不言
不言オリジナル
2018-08-29 10:52:261775ブラウズ

この記事の内容は、PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスをどのように分析するかというもので、一定の参考価値がありますので、困っている友人は参考にしていただければ幸いです。

1. 背景

プロジェクトがオンラインに移行しようとしています。コードの安定性と効率を分析するためにいくつかのツールを使用したいと考えています。前のチームで使用していた xhprof 拡張機能を思い出しました。 ; 新しいコンピューターに変更したため、この拡張機能は再コンパイルする必要があります。レビューを容易にし、より多くの読者を支援するために、インストールと実際のトラブルシューティングのプロセスが完全に記録されるようになりました。

2. 操作手順

  1. 拡張機能のインストール

  2. 拡張機能の設定

  3. テスト分析

3. インストール

xhprof 拡張機能 PHP は付属していません。インストール後に使用できるようにする前に、作者が別途インストールする必要があります。著者はここでソースコードをインストールする方法を使用します. インストールプロセスは次のとおりです.

3.1 ソースコードをダウンロードします

xhprof は PHP の PECL 正式バージョンですでに比較的古いものです. 著者の PHP バージョンは PHP7 です. 1. したがって、GitHub で xhprof の新しいバージョンをダウンロードする必要があります。ソース コードは次のコマンドを参照してください。

git clone https://github.com/longxinH/xhprof

3.2 検出環境

コンパイルされたフォルダーに入り、コマンドを参照してください

cd xhprof/extension/

次に、ソース コードをコンパイルする必要があります。コンパイル前に phpze を使用できます。PHP 環境を検出するには、参照コマンドは次のとおりです。

phpize

戻り結果は次のとおりです

Configuring for:
PHP Api Version:         20160303
Zend Module Api No:      20160303
Zend Extension Api No:   320160303

3.3 コンパイルとインストール

コンパイルの次のステップの準備として Makefile を生成します

./configure

返される結果は次のとおりです

creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
config.status: config.h is unchanged

コンパイルとインストールを開始します

make && make install

返却結果は以下の通りです

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/

返却情報からインストールが完了し拡張子が表示されていることが分かります ファイルの保存場所

4. 設定

ソース コードをコンパイルしてインストールした後、作成者は PHP 構成フォルダーと xhprof でいくつかの簡単な構成を実行する必要があります。操作プロセスは次のとおりです

4.1構成ファイル

PHP の構成を変更するには、まず構成ファイルの場所を知る必要があります。ここで、PHP コマンドを使用して構成ファイルの場所を表示できます。参照コマンドは次のとおりです:

php --ini

コマンドを実行すると、返された結果は次のとおりです

Configuration File (php.ini) Path: /usr/local/etc/php/7.1
Loaded Configuration File:         /usr/local/etc/php/7.1/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.1/conf.d
Additional .ini files parsed:      /usr/local/etc/php/7.1/conf.d/ext-opcache.ini

返された結果には、複数の設定ファイルのパスが表示されます。作成者が必要とするのは 2 番目のファイルです php.ini

拡張機能ディレクトリの格納場所を確認します 参照コマンドは以下のとおりです

cat /usr/local/etc/php/7.1/php.ini | grep extension_dir

戻り結果は以下のとおりです

extension_dir = "/usr/local/lib/php/pecl/20160303"
; extension_dir = "ext"
; Be sure to appropriately set the extension_dir directive.
;sqlite3.extension_dir =

4.2構成

返された結果から、拡張機能の保存ディレクトリの場所は次のとおりであることがわかります

/usr/local/lib/php/pecl/20160303

ここで、コンパイルしたばかりの xhprof 拡張機能をこのディレクトリにコピーする必要があります。

cp /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/xhprof.so  /usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/

vimエディターで設定ファイルを編集します 参考コマンドは以下のとおりです

vim  /usr/local/etc/php/7.1/php.ini

設定ファイルの最後にxhprof設定を追加し、生成されたソースファイルをカスタマイズしますxhprof を使用して参照設定を次のように保存します

[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/www/xhprof/save_output_dir

4.3 再起動して有効にします

保存後、作成者は php-fpm を再起動してその設定を有効にします。参照コマンドは次のとおりです:

brew info php@7.1

コマンドの実行後、返された情報には次の情報が表示されます

To have launchd start php@7.1 now and restart at login:
  brew services start php@7.1
Or, if you don't want/need a background service you can just run:
  php-fpm

したがって、restart PHP-FPM コマンドは、

brew services restart php@7.1

再起動が完了すると、返される結果は次のとおりです

Stopping `php@7.1`... (might take a while)
==> Successfully stopped `php@7.1` (label: homebrew.mxcl.php@7.1)
==> Successfully started `php@7.1` (label: homebrew.mxcl.php@7.1)

4.4 インストールを確認します

次に、xhprof 拡張機能がインストールされているかどうかを確認します。完了した参照コマンドは次のとおりです。

php -m | grep xhprof

コマンドの実行後、拡張機能のインストールが成功した場合の戻り結果には、次の図に示すように xhprof が表示されます

PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法

##5. テスト

上記の操作の後、作成者はインストールと設定に成功しました。次に、PHP コードを使用して xhprof の分析効果を検証する必要があります。

5.1 仮想ホストの作成

まず、ユーザーがブラウザ経由でアクセスできるように仮想ホストを作成します。仮想ホストを作成するには、ルート ディレクトリを作成し、nginx 構成ファイルを編集する必要があります

5.1. 1 プロジェクトディレクトリの作成

プロジェクトのルートディレクトリを作成します、参照コマンドは以下の通りです

mkdir -p /Users/song/mycode/work/test
作成後成功した場合、作成者は git によってプルダウンされたコードの一部をプロジェクトのルート ディレクトリにコピーする必要があります。参照コマンドは次のとおりです

cp -r xhprof/xhprof_html /Users/song/mycode/work/test/
cp -r xhprof/xhprof_lib /Users/song/mycode/work/test/
5.1.2 設定ファイルを編集します

##設定を追加しますファイルについては、コマンドを参照してください。

/usr/local/etc/nginx/nginx.conf

次のように構成ファイルを追加します

    server {
        listen       80;
        server_name  test.localhost;

        root   /Users/song/mycode/work/test;
        index  index.html index.htm index.php;
        
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }


        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

    }

/etc/hosts に

解析レコードの行をファイルに追加します。 <pre class="brush:php;toolbar:false">127.0.0.1 test.localhost</pre>5.2 新しいテスト コードを作成します

これは既に git ウェアハウスの

examples

フォルダーにあります。デモ コードですが、このコードのコメントはコードはすべて英語であり、整形方法が作成者にとって理解しにくいため、このファイルを再編集しました。参考手順は次のとおりです。 使用して新しい PHP ファイルを作成します

vim /Users/song/mycode/work/test/test.php

次のコードをファイルに追加します

<?php //加载所需文件
include_once "./xhprof_lib/utils/xhprof_lib.php";
include_once "./xhprof_lib/utils/xhprof_runs.php";

//随意定义一个函数
function test($max)
{
    for ($idx = 0; $idx < $max; $idx++) {
        echo &#39;&#39;;
    }
}

//定义测试方法
function a()
{
    test(rand(1000,5000));
}

//开始分析
xhprof_enable();

//需要分析的函数
a();

//结束分析
$xhprof_data = xhprof_disable();
//实例化xhprof类
$xhprof_runs = new XHProfRuns_Default();
//获取当前当前页面分析结果
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");

echo "\nhttp://test.localhost/xhprof/xhprof_html/index.php?run=$run_id&source=xhprof_foo\n";

コードを保存した後、ブラウザから対応する URL アドレスにアクセスします。URL アドレスは次のとおりです。

http://test.localhost/xhprof/test.php

5.3 結果の分析

実行後の結果は以下の通りです

PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法ページ内にURLアドレスが表示されますので、このURLをコピーして開くと、このコードの解析結果は下図のとおりです。

PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法

ページには、各方法にかかる時間を示すリストがあります。リストが十分に明確ではないと思われる場合は、リストの ## をクリックしてください。 #View Full Callgraph リンクでは、下の図に示すように、画像を直接生成できます。

PHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法

実行結果を明確に確認できます。画像内の時間はすべてテスト メソッドで消費されるため、作成者はこのメソッドに対してターゲットを絞った最適化を実行できます。

関連する推奨事項:

php パフォーマンス監視拡張機能 xhprof

##Web パフォーマンス分析に xhprof (PHP) 拡張機能を使用する

以上がPHP の拡張機能 Xhprof がプロジェクトのパフォーマンスを分析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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