ホームページ  >  記事  >  バックエンド開発  >  PHP パフォーマンスに関する注意点の概要

PHP パフォーマンスに関する注意点の概要

WBOY
WBOYオリジナル
2016-06-13 12:28:17725ブラウズ

簡単な PHP パフォーマンスに関する注意事項

どのような状況でパフォーマンスの問題が発生する可能性がありますか?

1. PHP 構文の不適切な使用

2. PHP 言語を使用して実行されていない得意なこと

3. PHP言語を使って接続するサービスが苦手

4. PHP自体の欠点

5.

一般的な状況: PHP のパフォーマンスの問題は半分を超えない (通常 30% ~ 40%)

PHP のパフォーマンスの問題を解決するための方向性:

php言語レベルのパフォーマンスの最適化—>php周囲の問題 (接続されたサービス、ネットワーク環境) のパフォーマンスの最適化—>php言語の自己分析と最適化

(php 言語レベル)

最適化ポイント: コードの作成量を減らし、php の使用量を増やす自身の能力

問題: 自作のコードは冗長で可読性が低いため、パフォーマンスが低下します

パフォーマンスが低い理由: PHP コードをコンパイルし、基礎となる言語に解析する必要があります。このプロセスはリクエストごとに一度処理され、高価です

方法: php でより多くの組み込み変数、定数、関数を使用します

最適化ポイント: php組み込み関数のパフォーマンスの長所と短所

状況の説明: PHP 組み込み関数、それらの間にはまだ速度差があります

提案: PHP 組み込み関数の時間計算量の詳細については、こちらをご覧ください

最適化ポイント: マジック関数の使用はできるだけ少なくしてください

状況の説明: PHP が提供するマジック関数のパフォーマンスが低い

パフォーマンスが低い理由: PHP プログラマの手間を省くために、PHP 言語は多くのことをしてくれています

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

最適化 ポイント: 追加のオーバーヘッドを生成するエラー抑制機能 @

実際のロジック: 実行前コードを編集するには、最高のエラー報告レベルを設定し、終了後に再度エラー報告レベルを設定します。オペコードを追加してエラーを無視します

最適化ポイント: メモリの合理的な使用

状況の説明: PHP にはメモリ リサイクル メカニズムが保証されていますが、使用してくださいメモリ

推奨事項: unset() を使用して、不適切なメモリを速やかに解放します (注: unset() はログアウトできない可能性があります)

最適化ポイント: 正規表現の使用をできるだけ少なくする

状況の説明: 式のバックトラッキングのオーバーヘッドが大きい、「ダイヤモンドなしでセラミック作業を行うな」

提案: 文字列処理関数を使用して同じロジックを実装します

最適化ポイント: ループ内での操作の実行を避ける

状況の説明: 内の計算式ループは二重にカウントされます

$str="hello world";

//strlen($str) は外側に配置されます

for($i=0;$i

//何かをします

}

?>

最適化ポイント: コンピューティング集約型ビジネスの削減

状況の説明: PHP は集約型コンピューティング シナリオには適していません

なぜですか? php の言語特性により、php は大規模なデータの計算には適さないと判断されます

php は、Web サーバーとバックエンド サービスの接続、UI プレゼンテーションに適したシナリオに適しています

最適化ポイント: キー値として必ず引用符で囲まれた文字列を使用してください

状況の説明: PHP は引用符なしのキー値を定数として扱うため、定数を見つけるコストが発生します

推奨: キー値として引用符を厳密に使用してください

---------------------- --------- ---------

(PHP 周辺問題のパフォーマンス最適化) -

実行環境、ファイルストレージ、データベース、キャッシュ、ネットワーク

ファイル操作の削減

一般的な PHP シナリオにおけるオーバーヘッドの順序:

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

メモリの読み取りと書き込み

ネットワークリクエストの最適化

ネットワークリクエストの落とし穴:

1. 相手のインターフェースの不確実要素

2.

ネットワークリクエストを最適化するにはどうすればよいですか?

1. タイムアウトを設定します

a) 接続タイムアウト 200ms

b) 読み取りタイムアウト 800ms

c) 書き込みタイムアウト 500ms

2. シリアルリクエストを並列化します

a)curl_multi_*() を使用します

b) swoole 拡張機能を使用します

php インターフェイス出力を圧縮します

繰り返し計算内容をキャッシュする

どのような場合に出力内容をキャッシュする必要がありますか?

複数のリクエスト、コンテンツは変更されません

重複する時間ウィンドウのアイデア

バイパス スキーム

PHP 自体の分析と最適化:

ツールによるテスト

PHP パフォーマンスのボトルネックの解決:

オペコード キャッシュ ( キャッシュコードコンパイルの最後のステップ) オペコードのキャッシュに使用される PHP 拡張 APC ソフトウェアの使用手順:

Ab -h

apache Benchmark (ab) は、提供されるストレス テスト ソフトウェアですこのストレス テスト ソフトウェアは、Apache サーバーのインストール時に組み込まれます

使用: ./ab -n1000 -c100 http://www.baidu.com/

-n リクエスト数 -c 同時実行数 URL ターゲット ストレス テスト アドレス

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