この記事では、XHProf を使用して PHP のパフォーマンスのボトルネックを分析する 2 番目の方法を主に紹介します。これには、一定の参考値があります。ここで共有します。必要な友人は、前の記事を参照してください。
私たちは、 xhprof 拡張機能に基づいて PHP のパフォーマンスを分析し、それをログに記録し、最後に xhprof 拡張機能に付属する UI を使用して Web 上に表示する方法を紹介しました。この記事では、次の 2 つのナレッジ ポイントについて説明します。
xhgui を使用して、xhprof のデフォルト UI インターフェイスを置き換えます。これにより、分析が容易になります。 Tideways は、置換用の xhprof 拡張機能を拡張します
より美しい UI を使用します: xhgui
xhprof は Facebook からのものですが、長い間更新されておらず、公式ソースによると、このパッケージは放棄され、メンテナンスされていないことが示されています。 Tideways はその逆で、営利企業が Tideways を保守し、PHP7 を積極的にサポートしています。どちらの拡張機能もオープンソースであるため、コードを分析するには Tideways を選択することをお勧めします。
Tideways 拡張機能のインストール:
wget https://github.com/tideways/php-xhprof-extension/archive/v4.1.5.tar.gz -O php-xhprof-extension-4.1.5.tar.gz tar xzf /php-xhprof-extension-4.1.5.tar.gz cd php-xhprof-extension-4.1.5 phpize ./configure make && make install
xhgui のインストール
cd /work/ git clone https://github.com/perftools/xhgui.git xhgui
中国語インターフェイスをインストールする必要がある場合は、次の手順を実行します:
git clone https://github.com/laynefyc/xhgui-branch.git xhgui
cd xhgui php install.php
インストールには数分かかります。しばらくお待ちください。
キャッシュ ディレクトリのアクセス許可を設定し、nginx がファイルを作成できるようにします。
chmod -R 777
xhgui は、
external/header.phpにあるすべてのインジェクション エントリ ファイルを既に作成しています。前の記事と同様に、
xhprof.inc.php インジェクション ファイルを手動で作成します。 MongoDB とクライアントのインストール
xhgui はログを MongoDB に書き込むため、xhgui を使用するには MongoDB サーバーをインストールする必要があります。 MongoDB サーバーのインストールと起動のプロセスはここでは省略します。
$ /usr/local/mongodb/bin/mongo > use xhprof db.results.ensureIndex( { 'meta.SERVER.REQUEST_TIME' : -1 } ) db.results.ensureIndex( { 'profile.main().wt' : -1 } ) db.results.ensureIndex( { 'profile.main().mu' : -1 } ) db.results.ensureIndex( { 'profile.main().cpu' : -1 } ) db.results.ensureIndex( { 'meta.url' : 1 } )
同様に、xhgui は PHP で書かれているため、MongoDB のデータを読み取る必要もあります。 php クライアント:
pecl install mongodb
次に、php.ini ファイルに構成を追加します:
[mongo] extension=mongo.so
拡張機能が正常にインストールされているかどうかを確認します:
php -m | grep mongo
次にphp-fpm サービスを再起動します。
xhgui の設定
xhgui の config ディレクトリには config.default.php があり、それを
config.php'db.host' => 'mongodb://127.0.0.1:27017',
はサンプリング周波数も変更します。デフォルトは 1/100 です。テストする場合は、true に変更してください: <pre class="brush:php;toolbar:false"> 'profiler.enable' => function() {
//return rand(1, 100) === 42;
return true;
},</pre>
Configuration projectjection
前の記事では、エントリ ファイルは php.ini または nginx で記述できます。nginx 設定に記述することをお勧めします。これは、php 環境を使用するすべてのプロジェクトではなく、nginx に対応するプロジェクトにのみ影響します。エントリ ファイルは、xhgui に付属のインジェクション ファイルを使用します:
location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "auto_prepend_file=/work/xhgui/external/header.php"; include fastcgi_params; }
xhgui web の構成
xhprof.test.com.conf を次のように変更します。
server { listen 80; server_name xhprof.test.com; #root /work/xhprof/xhprof_html; root /work/xhgui/webroot/; index index.php index.html; location / { if (!-e $request_filename) { rewrite . /index.php last; } } 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; } }
アプリケーション インターフェイスを数回リクエストし、ブラウザを開いて http://xhprof.test.com/ と入力すると、次の内容が表示されます。
特定のリクエストをクリックして確認してください。詳細:以上がこの記事の全内容です。皆様の学習にお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
以上がXHProf を使用して PHP パフォーマンスのボトルネックを分析する方法 2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。