この記事は、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 中国語 Web サイトの他の関連記事を参照してください。