ホームページ  >  記事  >  バックエンド開発  >  PHP パフォーマンス問題の分析 + 最適化

PHP パフォーマンス問題の分析 + 最適化

little bottle
little bottle転載
2019-04-19 18:03:572422ブラウズ

この記事は、PHP のパフォーマンス問題の分析と最適化に関するものです。興味のある友人は、ぜひ詳細を学びに来てください。

PHP のパフォーマンスの問題はどのような状況で発生しますか?
1 PHP 構文の不適切な使用
2 PHP 言語が苦手なことは実行できません
3 PHP 言語を使用して接続されるサービスは強力ではありません
4 PHP 自体の欠点
5 問題は私にもわかりません

パフォーマンス問題の分析

PHP のパフォーマンス問題はプロジェクト全体のパフォーマンス問題の 50% を占めていますこの割合は 50% 未満です。

パフォーマンス最適化プロジェクトは、PHP のみの最適化に限定すべきではありません。

PHP 言語レベルのパフォーマンスの最適化
|
|
PHP 周辺機器のパフォーマンス問題の最適化



Apache Benchmark(ab)(ご自身でダウンロードできます)
ab は、Apache が提供するストレス テスト ソフトウェアです。 Apache サーバーのインストール時に含まれます。 #########使い方?

#。/AB-N1000 -C100 http://www.baidu.com/

ターゲットストレステストアドレス
Php-ストレス テスト ツールの使用法のデモ




1 秒あたりのできるだけ多くの同時実行に主に焦点を当てます

リクエストにかかる時間をできる限り短くします

PHP 独自の機能をより多く使用する

最適化: コードの作成量を減らし、PHP 独自の機能をより多く使用する

パフォーマンスの問題: 自己 コードには多くの冗長性があり、可読性が低く、パフォーマンスが低い

パフォーマンスがこれほど低いのはなぜですか?
良い方法: PHP の組み込み変数/定数/関数をさらに使用する
PHP 自身の能力パフォーマンス テストのためのコードの準備


php コード実行プロセス


*.php ---スキャナ--->式 -----パーサー--->オペコード---実行--->出力




php 組み込み関数間のパフォーマンステスト



最適化ポイント: php 組み込み関数のパフォーマンス上のメリットとデメリット

状況説明: php 組み込み関数、
間のブロック速度の差はまだあります。 良い提案: PHP 組み込み関数の時間計算量について詳しく学ぶ


PHP ビルド間のパフォーマンス テストのコード テスト-in 関数



isset($arr[$i]); //平均 50ms
array_key_exists($i,$arr);//平均 85ms


PHP を削減マジック関数の使用

状況説明: PHP が提供するマジック関数のパフォーマンスが低い
パフォーマンスが低い理由 PHP プログラマのトラブルを避けるために、PHP 言語は多くのことを行ってくれます

良い方法 PHP マジック関数の使用をできるだけ避ける




PHP エラー抑制機能を無効にする

@
## の実際のロジック# コードの開始前と終了後に増加します。オペコードはエラーを無視します。

php -dv|d.active=1 -dv|d.execute=0 at.php

ただ、チェックを入れて実際には実行したくない


PHP - メモリと正規表現の合理的な使用
最適化ポイント: メモリの合理的な使用

PHP には収益を保証するメモリ リサイクル メカニズムがありますが、メモリの使用には注意してください。

良いアドバイス
unset() を使用して、未使用のメモリを時間内に解放してください (注: unset()ログアウトできない可能性があります)


正規表現の使用はできるだけ少なくしてください

正規表現のバックトラッキングのオーバーヘッドは比較的大きいため、

良い提案:
同じロジックを実現するには文字列処理関数を使用します。


PHP - ループ内での計算を避ける

最適化ポイント: ループ内での計算を避ける

状況の説明:
ループ内の計算式が繰り返し計算されます

コード例:
# PHP は大規模なデータの計算には適していません


PHP は次のような場合に適していますシナリオ

Web サーバーとバッキング サービスの接続、UI レンダリングに適しています


PHP - 必ず引用符を使用してください文字列をキー値として使用してください

PHP はキー値を扱います定数として引用符を使用しないため、定数を見つけるオーバーヘッドが発生します。

引用符で囲まれた文字列をキー値として厳密に使用します。




PHP に関する問題の分析と説明



PHP の周辺機器とは何ですか?

Linux 動作環境 php ハードディスク (ファイル ストレージ) データベース (mysql など) キャッシュ ネットワーク


分析PHP 周辺機器が PHP プログラムに及ぼす影響

ファイル タイプ操作の削減 一般的な PHP シナリオのオーバーヘッド順序 :

ディスクの読み取りと書き込み 読み取りと書き込みデータベースの書き込み メモリの読み取りおよび書き込み ネットワーク データの読み取りおよび書き込み

メモリの読み取りおよび書き込み<<データベースの読み取りおよび書き込み< ディスクの読み取りおよび書き込み< ネットワーク データの読み取りおよび書き込み




PHP によって開始されるネットワーク リクエストの削減



ネットワーク リクエストの落とし穴:
1 相手のインターフェイスの不確実要素
2 ネットワークの安定性パフォーマンス
ネットワーク リクエストの最適化

# 1セットタイムアウト期間
#接続タイムアウト
読み取りタイムアウト800ms 書き込みタイムアウト500ms 2並列シリアルリクエストバッチセッションcurl_multi_close cURLハンドルのグループを閉じるcurl_multi_exec現在のcURLハンドルのサブ接続を実行
curl_multi_getcontent CURLOPT_RETURNTRANSFER が設定されている場合、取得した出力テキスト ストリームを返します。
curl_multi_info_read 現在解析されている cURL の関連送信情報を取得します。
curl_multi_remove_handle CURL バッチ処理ハンドル リソース内のハンドル リソースを削除します。
curl_multi_select すべてのアクティブな接続を待ちます。 cURL バッチ処理での
curl_multi_setopt cURL マルチ ハンドルのオプションの設定
curl_multi_strerror - エラー コードを説明する文字列を返す


推奨される swoole 拡張機能


PHP 出力の圧縮の長所と短所
PHP インターフェイスの出力の圧縮
圧縮方法は?

Gzip を使用する
# 利点 データ出力に役立ち、クライアントはより速くデータを取得できます
欠点 CPU オーバーヘッドの追加

PHP キャッシュの再利用

以下出力コンテンツはどのような状況でキャッシュされますか?
複数のリクエスト、コンテンツは変更されない


Smarty の調整と時間枠の重複に関するアイデア

Smarty がキャッシュをオンにする

時間枠の重複に関するアイデア

シリアル:
Process1 Process2 Process3 Process4

重複する時間枠:

process1
process2
process3
Process4

次の時間枠タスクは前のタスクに強く依存していないため、オーバーラップ時間を使用できます



PHP バイパス処理ソリューション
一般的には通常の: x.php -> プロセス 1 ->プロセス 2 ->プロセス 3 -> プロセス 4->

バイパス ソリューション: x.php -> プロセス 1 ->プロセス 2 (同時に) ->プロセス 3 (同時に) -->Process4->

推奨チュートリアル:

PHP ビデオ チュートリアル

以上がPHP パフォーマンス問題の分析 + 最適化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。