どのような状況でパフォーマンスの問題が発生する可能性がありますか:
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="ハローワールド";
//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) スウールエクステンションを使用する
PHPインターフェース出力を圧縮する
重複した計算内容をキャッシュする
どのような状況で出力コンテンツをキャッシュする必要がありますか?
複数のリクエストでも内容は変わりません
重複する時間枠のアイデア
バイパスソリューション
PHP自体を分析して最適化します:
ツールを使ってテストする
PHP パフォーマンスのボトルネックの解決策:
オペコード キャッシュ (コード コンパイルの最後のステップでキャッシュ) PHP 拡張機能 APC がオペコード キャッシュに使用されます
ストレステストソフトウェアの使用に関する補足説明:
腹部
apache Benchmark (ab) は、Apache が提供するストレス テスト ソフトウェアです。このストレス テスト ソフトウェアは、Apache サーバーのインストール時に含まれます。
使用: ./ab -n1000 -c100 http://www.baidu.com/
C -N リクエスト番号 -C 同時 URL ターゲット圧力テスト アドレス