XHProf を使用して PHP パフォーマンスのボトルネックを見つける例の説明
以下のエディターでは、XHProf を使用して PHP のパフォーマンスのボトルネックを見つける例を紹介します。これは優れた参考値であり、皆さんの役に立つことを願っています。エディターをフォローして見てみましょう。
XHProf は、PHP パフォーマンスをテストするために Facebook によって開発された拡張機能です。この記事では、XHProf を使用して PHP パフォーマンスを最適化し、PHP アプリケーションのパフォーマンスのボトルネックを見つける方法を記録します。
1. Xhprof 拡張機能をインストールします
//github上下载https://github.com/facebook/xhprof unzip xhprof-master.zip cd xhprof-master/extension/ /usr/local/php/bin/phpize ./configure --with-php-config=/usr/local/php/bin/php-config --enable-xhprof make && make install
2。 php.ini
[xhprof] extension=xhprof.so xhprof.output_dir=/tmp
設定の xhprof.output_dir を変更して、生成されたプロファイル ファイルが保存される場所を指定します。 /tmp となります。
3. 関連ファイルをプロジェクトに移動します
//xhprof下载压缩包中的xhprof_html和xhprof_lib cp -r xhprof-master/xhprof_html /usr/local/nginx/html/xhprof/ cp -r xhprof-master/xhprof_lib /usr/local/nginx/html/xhprof/
ドメイン名の設定サーバーは http://will.com/xhprof/xhprof_html/index.php
server{ listen 80; server_name will.com; location / { root /usr/local/nginx/html; index index.html; } location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
## にアクセスできます。 4.graphivz# をインストールします。
##//需要安装graphviz否则查看性能图片时候会报failed to execute cmd: " dot -Tpng". stderr: `sh: dot: command not found ' yum -y install graphviz
5. テスト ファイルを作成します
//入口文件的开始位置 xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU); 业务逻辑... //业务逻辑结束后 $xhprof_data = xhprof_disable(); include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_runs.php"; $objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 $run_id = $objXhprofRun->save_run($xhprof_data, "test");
完全なコード例 (ランダムな赤い封筒のデモ)
<?php xhprof_enable(XHPROF_FLAGS_MEMORY | XHPROF_FLAGS_CPU); function show($info) { echo "<pre class="brush:php;toolbar:false">"; print_r($info); } //不作数据校验 $rules = array( 2=>array('min'=>1, 'max'=>10, 'chance'=>30),//金额:分 概率:百分之(默认为100%,不足100%按第一档计算) array('min'=>11, 'max'=>25, 'chance'=>60), array('min'=>26, 'max'=>50, 'chance'=>10), array('min'=>50, 'max'=>80, 'chance'=>0), array('min'=>80, 'max'=>100, 'chance'=>0), ); $total_money = 10000;//红包总金额 $res = array(); while($total_money>0) { $index = getLevel($rules); $money = setMoney($rules, $index); if ($money > $total_money)//金额不足 { $money = $total_money; $total_money = 0; } else { $total_money -= $money; } $res[] = ($index+1)."---".$money; } echo show($res); echo $total_money . "<br/>"; //1.先确定档次 function getLevel($rules) { $level = array(); $chance = 0; foreach($rules as $k=>$v) { if ($v['chance']>0) { $chance += $v['chance']*100;//扩大100倍 $level[$k] = $chance; } } $index = 0; $rand_num = mt_rand(1, 10000); foreach($level as $k=>$v) { if ($rand_num <= $v) { $index = $k; break; } } return $index; } //2.确定档次之后,再确定金额 function setMoney($rules, $index) { $money = mt_rand($rules[$index]['min']*10000, $rules[$index]['max']*10000)/10000; $money = ceil($money); $money > 1 && $money = $money -1;//防止出现免单情况 return $money; } $xhprof_data = xhprof_disable(); include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "/usr/local/nginx/html/xhprof/xhprof_lib/utils/xhprof_runs.php"; $objXhprofRun = new XHProfRuns_Default();//数据会保存在php.ini中xhprof.output_dir设置的目录去中 $run_id = $objXhprofRun->save_run($xhprof_data, "test"); echo "http://will.com/xhprof/xhprof_html/index.php?run=$run_id&source=test";//变量$runId是本次请求生成分析结果的id,最后我们输出了一个链接地址,使用改地址就可以看到本次请求的分析结果。
6. 分析結果の表示最初にビジネス コードを実行します;
次にブラウザが http://will.com/xhprof/xhprof_html/index.php を開き、最後にクリックしてxhprof ファイル
中央にある
View Full Callgraph<span style="font-family:NSimsun"> リンクに注目してください。これを通じて、グラフィカルな分析を確認できます。結果</span>
図の赤い部分は、パフォーマンスが比較的低く、消費時間が長い部分です。どの関数がマークされているかに応じて、システム コードを最適化できます。
さらに、xhprof レポート フィールドの意味: 関数名: メソッド名。
Calls: メソッドが呼び出された回数。
Calls%: 同じレベルのメソッド呼び出しの合計数に対するメソッド呼び出しの数の割合。
Incl.Wall Time(microsec): サブメソッドの実行時間を含む、メソッドの実行にかかる時間。 (単位: マイクロ秒)
IWall%: メソッドの実行に費やされた時間の割合。
Excl. Wall Time (microsec): サブメソッドの実行時間を除く、メソッド自体の実行にかかる時間。 (単位: マイクロ秒)
EWall%: メソッド自体の実行に費やした時間の割合。
CPU を含む (マイクロ秒): サブメソッドの実行時間を含む、メソッドの実行に費やされた CPU 時間。 (単位: マイクロ秒)
ICpu%: メソッドの実行に費やされた CPU 時間の割合。
Excl. CPU (microsec): サブメソッドの実行時間を除く、メソッド自体の実行に費やされた CPU 時間。 (単位: マイクロ秒)
ECPU%: メソッド自体の実行に費やされた CPU 時間の割合。
Incl.MemUse(bytes): メソッドの実行によって占有されるメモリ (サブメソッドの実行によって占有されるメモリを含む)。 (単位: バイト)
IMemUse%: メソッドの実行によって占有されているメモリの割合。
Excl.MemUse(bytes): サブメソッドの実行によって占有されるメモリを除く、メソッド自体の実行によって占有されるメモリ。 (単位: バイト)
EMemUse%: メソッド自体が占有するメモリの割合。
Incl.PeakMemUse(バイト): Incl.MemUse ピーク値。 (単位: バイト)
IPeakMemUse%:MemUse のピークの割合を含みます。
Excl.PeakMemUse(バイト): Excl.MemUse のピーク値。単位: (バイト)
EPeakMemUse%: Excl.MemUse ピークの割合。
XHProf を使用して PHP パフォーマンスのボトルネックを見つける上記の例は、エディターによって共有されたすべてのコンテンツです。参考になれば幸いです。また、PHP 中国語 Web サイトをサポートしていただければ幸いです。
興味があるかもしれない記事:
Laravel フレームワークのカスタム テンプレート ディレクティブの関連概要クイックソートメソッドのPHP再帰実装例説明gitデプロイメントメソッドのPHP実装の詳細説明チュートリアル以上がXHProf を使用して PHP パフォーマンスのボトルネックを見つける例の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









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

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

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

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

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

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