ホームページ > バックエンド開発 > PHPチュートリアル > PHP アプリケーションのパフォーマンスを最適化する方法: ベスト プラクティスとテクニック

PHP アプリケーションのパフォーマンスを最適化する方法: ベスト プラクティスとテクニック

Susan Sarandon
リリース: 2024-12-27 20:04:11
オリジナル
643 人が閲覧しました

How to Optimize the Performance of a PHP Application: Best Practices and Techniques

PHP アプリケーションのパフォーマンスを最適化する方法

PHP アプリケーションのパフォーマンスを最適化することは、高速かつ効率的なユーザー エクスペリエンスを提供するために重要です。パフォーマンスの最適化は、応答時間を改善するだけでなく、リソース消費を削減し、サーバー負荷を最小限に抑え、スケーラビリティを確保するのにも役立ちます。この記事では、PHP アプリケーションのパフォーマンスを最適化するためのさまざまなテクニックとベスト プラクティスについて説明します。


1.アプリケーションのプロファイルとベンチマークを実行します

最適化に入る前に、アプリケーションのプロファイリングベンチマークを実行して、ボトルネックや改善が必要な領域を特定することが重要です。パフォーマンスの問題がどこにあるのかを知ることで、最も重要なことに集中して取り組むことができます。

a.プロファイリングツール:

  • Xdebug: メモリ使用量、実行時間、関数呼び出しに関する洞察を提供する、PHP 用の強力なデバッガーおよびプロファイラーです。
  • Blackfire: ボトルネックを特定し、コードのパフォーマンスを最適化するのに役立つ PHP プロファイラー。
  • Tideways: PHP アプリケーションのパフォーマンス監視およびプロファイリング ツール。
  • New Relic: PHP アプリケーションのパフォーマンスをリアルタイムで追跡する監視ツールです。

b.ベンチマーク:

Apache BenchSiege、または JMeter などのツールを使用してアプリケーションのストレス テストを行い、負荷がかかっている状態でアプリケーションがどのように動作するかを確認します。

プロファイリングとベンチマークにより、最適化の適切な領域に取り組んでいることを確認できます。


2.オペコード キャッシュ (OPcache) を使用する

PHP はインタープリタ言語です。つまり、PHP スクリプトが実行されるたびに、コードが解析され、マシンコードにコンパイルされます。これにより、特に大規模なアプリケーションの場合、パフォーマンスの問題が発生する可能性があります。 オペコード キャッシュ により、リクエストごとに PHP コードを再コンパイルする必要がなくなります。

OPcache:

  • OPcache は、プリコンパイルされたスクリプトのバイトコードをメモリに保存する、PHP (PHP 5.5 以降) の組み込みオペコード キャッシュです。
  • これにより、リクエストごとに PHP コードを解釈するオーバーヘッドが削減され、実行が大幅に高速化されます。

OPcache を有効にする方法:

php.ini ファイルを確認し、次のように構成して、OPcache が有効になっていることを確認します。

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

OPcache を有効にすると、PHP スクリプトが一度コンパイルされてメモリにキャッシュされるため、応答時間が短縮されます。


3.データベースクエリを最適化する

データベース クエリは、多くの場合、Web アプリケーションの実行時間のかなりの部分を占めます。データベースの相互作用を最適化すると、パフォーマンスが大幅に向上する可能性があります。

a.データベースクエリの削減:

  • クエリの数を最小限に抑える: 可能な限り、複数のデータベース操作を 1 つのクエリに統合するようにしてください。
  • 複数のクエリの代わりに JOIN を使用します: これにより、PHP とデータベース間の往復回数が削減されます。
  • N 1 クエリの問題を回避します: アイテムごとに追加のクエリを実行するのではなく、1 つのクエリで関連データを取得します。

b.インデックスを使用する:

インデックスは、データの取得を高速化するために非常に重要です。データベース テーブルに、頻繁にクエリされる列や JOIN 操作で使用される列に適切なインデックスがあることを確認してください。

c.クエリ結果のキャッシュ:

頻繁に変更されないデータの場合は、データベースへの繰り返しのクエリを避けるために、高価なデータベース クエリの結果をキャッシュします。次のものが使用できます:

  • Memcached
  • レデ​​ィス

Memcached と Redis はどちらもデータをメモリに保存するため、頻繁に要求されるデータにすばやくアクセスできます。

d.データベース接続プール:

永続的なデータベース接続により、リクエストごとに新しい接続を確立するオーバーヘッドが軽減されます。データベース接続プーリングを構成して、接続をより効率的に管理できます。


4. HTTP キャッシュを有効にする

HTTP キャッシュにより、サーバーで処理する必要があるリクエストの数を大幅に減らすことができます。 HTTP 応答をキャッシュすると、ブラウザーや他のキャッシュ プロキシが同じリクエストを複数回行う代わりに応答を再利用できるようになります。

a.キャッシュ制御ヘッダーの活用:

Cache-Control や Expires などの HTTP ヘッダーを使用して、ブラウザまたは中間キャッシュにコンテンツを保存して再利用するように指示します。

例:

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

b.条件付きリクエストに ETag を使用する:

ETag (エンティティ タグ) を使用すると、リソースが変更された場合にのみサーバーが応答を送信できるため、帯域幅が節約され、サーバーの負荷が軽減されます。

header("Cache-Control: max-age=3600, must-revalidate");  // Cache for 1 hour
header("Expires: " . gmdate("D, d M Y H:i:s", time() + 3600) . " GMT");
ログイン後にコピー

c.コンテンツ配信ネットワーク (CDN) を使用します:

CDN は静的リソース (画像、CSS、JavaScript ファイルなど) のコピーを分散サーバーに保存することで、PHP サーバーの負荷を軽減し、世界中のユーザーへのコンテンツ配信を高速化します。


5. PHP コードを最適化する

PHP コード自体を最適化すると、パフォーマンスが大幅に向上する可能性があります。以下にいくつかの戦略を示します:

a. eval() の使用を避ける

eval() 関数は PHP コードを動的に評価するため、遅くて危険です。その使用を避け、動的コード実行の代替ソリューションを見つけてください。

b.関数呼び出しとループを削減

不要な関数呼び出しとループ、特に大規模なデータセットで繰り返し実行される関数呼び出しとループを最小限に抑えます。

c.組み込みの PHP 関数を使用する

PHP には、パフォーマンスの点で高度に最適化された組み込み関数が多数用意されています。利用可能な場合は、カスタム構築された関数よりもネイティブ関数を常に使用することを好みます。

d.コストのかかる操作を避ける

次のようなリソースを大量に使用する操作に注意してください。

  • 複雑な正規表現
  • ループでの広範なデータ処理
  • 大きなファイルのアップロード/ダウンロード

大きなタスクをより小さく管理しやすい部分に分割し、非同期で実行することを検討してください。


6.コンテンツ圧縮を利用する

ネットワーク経由で送信する前にデータを圧縮すると、特にインターネット接続が遅いユーザーにとって、帯域幅の使用量が削減され、応答時間が短縮されます。

a. Gzip 圧縮:

Gzip は広く使用されている圧縮アルゴリズムで、これを有効にすると、サーバーからの HTML、CSS、JavaScript 応答を圧縮できます。

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

b.ブロトリ圧縮:

Brotli は、Gzip よりも優れた圧縮率を提供する新しい圧縮アルゴリズムです。 Nginx や Apache などの最新の Web サーバーで有効にすることができます。


7.フロントエンドのパフォーマンスを最適化

PHP のパフォーマンスはバックエンドだけの問題ではありません。フロントエンドの最適化により、ユーザー エクスペリエンスが向上し、サーバーの負荷が軽減されます。

a. CSS と JavaScript を縮小します:

CSS および JavaScript ファイルを縮小すると、ファイル サイズが削減され、ダウンロードが高速化されます。

b.画像の遅延読み込み:

ビューポートに表示される直前にのみ画像を遅延読み込みすることで、帯域幅が節約され、ページの最初の読み込み時間が短縮されます。

c.非同期 JavaScript:

ページのレンダリング プロセスがブロックされないように、JavaScript ファイルを非同期的に読み込みます。


8. PHP-FPM と Web サーバーの最適化を使用する

PHP-FPM (FastCGI Process Manager) は、特にトラフィックの多い Web サイトのパフォーマンスを向上させるために設計された PHP 実装です。

a. PHP-FPM を適切に構成します:

プール設定を調整して PHP-FPM を最適化します:

  • pm.max_children 値を設定して、リクエストを処理するために十分な子プロセスが利用できるようにします。
  • pm.max_requests 設定を使用して、各プロセスが再起動される前に処理するリクエストの数を制限し、メモリ リークを削減します。

b. Web サーバーの最適化 (Nginx または Apache):

Web サーバーが多数の同時接続を処理できるように適切に設定されていることを確認してください。 Nginx または Apache の キープアライブ および ワーカー プロセス 構成を使用して、より多くのトラフィックを効率的に処理します。


9.セッション処理を効率的に使用する

PHP セッションは、特にセッション データをファイルに保存する場合に、パフォーマンスのボトルネックになることがあります。

a.インメモリセッションストレージを使用:

デフォルトのファイルベースのストレージの代わりに、Redis または Memcached を使用して、セッション データをメモリに保存します。これにより、セッションの読み取りと書き込みの速度が向上します。

b.セッションデータの制限:

大規模または複雑なデータを PHP セッションに保存しないでください。重要な情報のみを保存し、軽量のセッション処理メソッドを使用します。


10.コードを定期的にレビューしてリファクタリングする

アプリケーションが成長するにつれて、コードベースを定期的にレビューし、リファクタリングすることが重要です。最適化できる非効率なアルゴリズム、デッドコード、または時代遅れのプラクティスを探してください。


結論

PHP アプリケーションのパフォーマンスを最適化するには、アプリケーション スタックのさまざまな層にわたる戦略の組み合わせが必要です。プロファイリング、データベース クエリのキャッシュ、オペコード キャッシュの有効化、ネットワーク負荷の最小化、コードの最適化のためのツールを使用することで、PHP アプリケーションのパフォーマンスを大幅に向上させることができます。

これらのパフォーマンスの最適化に重点を置くことで、PHP アプリケーションは高トラフィックを処理し、応答時間を短縮し、効果的に拡張できるようになります。


以上がPHP アプリケーションのパフォーマンスを最適化する方法: ベスト プラクティスとテクニックの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート