ホームページ > php教程 > php手册 > PHPアプリケーションの高速化の詳細な紹介

PHPアプリケーションの高速化の詳細な紹介

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-21 08:52:14
オリジナル
1153 人が閲覧しました

高速性が PHP の最大の利点であることは誰もが知っています。一般に、PHP は常に Web コンテンツの動的な生成をサポートするのに十分な速度を備えており、多くの場合、PHP よりも高速な方法を見つけることさえできません。

ただし、大量のトラフィック、高負荷のアプリケーション、限られた帯域幅、およびパフォーマンスのボトルネックを生み出すその他のさまざまな要因に対処する必要がある場合、Web サイトの動作を改善するために何かできることはないかと自問するかもしれません。おそらく、非常に目立たない無料モジュールを追加するだけで、PHP アプリケーションのパフォーマンスと Web サーバーの応答速度が大幅に向上するでしょう。

この記事では、PHP アプリケーションのパフォーマンスをさらに向上させ、ユーザーにより良いブラウジング エクスペリエンスを提供する方法について説明します。この記事では、PHP アプリケーションのパフォーマンスを向上させるためのさまざまなテクノロジーをコードの最適化、キャッシュ、コンテンツの圧縮の 3 つの側面から説明し、さまざまな分野でよく知られている製品を紹介します。

コードの最適化

まず、コードの最適化について見てみましょう。ここでのコードの最適化は、コードをより美しくすることを意味するものではないことに注意してください。これはおそらくすでに知られており、これ以上議論する必要はないためです。また、速度の問題をすでに考慮している場合は、すでに検討している可能性があります。 PHP ソース コードに変更を加え、いくつかの最適化を行いました。

ただし、Zend Optimizer などの一部のツールは、これらの複雑なタスクを自動的に完了するのに役立ちます。 Zend Optimizer は Zend Technologies から無料で入手できますが、ライセンス契約に同意する必要があり、GPL に基づいて配布されていないことに注意してください。 Zend Optimizer は、Zend Engine のランタイム コンパイルによって生成された中間コードを取得し、中間コードの実行効率が向上するように最適化します。

Zend Optimizer のインストール方法は非常に簡単で、使用しているプラ​​ットフォーム用に提供されているプリコンパイル済みバージョンをダウンロードし、次の 2 行のコードを php.ini に追加して、Web サーバーを再起動するだけです。

zend_optimizer.optimization_level=15

zend_extension="/path/to/ZendOptimizer.so"

zend_loader.enable=オフ

ここで追加するコードの 3 行目はオプションです。 zend_loader を無効にすると、Zend Optimizer が少し高速になるようです。そのため、この行を php.ini に追加する価値があります。注: zend_loader を無効にできるのは、Zend Encoder Runtime を使用していない場合のみです。

キャッシュ

巨大な PHP アプリケーションのパフォーマンスを向上させたい場合は、キャッシュを使用することも良い方法です。 Zend Cache、APC、Afterburner Cache など、多くのキャッシュ ソリューションが利用可能です。

これらの製品はすべて「キャッシュ モジュール」です。 .php ファイルに対するリクエストが最初に発生すると、Web サーバーのメモリに PHP 中間コードが保存され、その後のリクエストには「コンパイルされた」バージョンで応答します。この方法では、ディスク アクセスが最小限に抑えられ (コードが読み取られて解析されている)、コードがメモリ内で直接実行されるため、サーバーがリクエストに非常に速く応答できるようになるため、アプリケーションのパフォーマンスが大幅に向上します。

もちろん、キャッシュ モジュールは PHP ソース ファイルの変更も監視し、必要に応じてページを再キャッシュします。これにより、ユーザーが古い PHP コードによって生成されたページを取得するのを防ぎます。キャッシュ モジュールはサーバーの負荷を大幅に軽減し、PHP アプリケーションの応答効率を向上させることができるため、負荷の高い Web サイトに非常に適しています。

これらのキャッシング製品の選び方

Zend Cache は Zend Technologies の商用ソフトウェアであり、Zend Technologies は PHP エンジンと無料の Zend Optimizer を提供している前述の会社です。 Zend Cache は確かに当然の機能です。大規模な PHP ページの場合、最初の実行後に速度が向上し、サーバーで使用できるリソースが増えることが感じられます。残念ながら、この製品は無料ではありませんが、場合によっては、それでも十分な価値がある可能性があります。

Afterburner Cache は、Bware Technologies の無料のキャッシュ モジュールです。この製品は現在ベータ版です。 Afterburner キャッシュは Zend Cache に似ていますが、(まだ) Zend Cache ほどパフォーマンスは向上せず、Zend Optimizer では動作しません。

APC は Alternative PHP Cache の略称で、Community Connect のもう 1 つの無料のキャッシュ モジュールです。すでに正式に使用できるほど安定した製品となっており、リクエストへの対応速度も大幅に向上するようだ。

コンテンツ圧縮

先ほど、PHP アプリケーションのパフォーマンスを向上させるいくつかの方法について説明しました。Web サイトが遅すぎると感じるもう 1 つの重要な要素、つまりダウンロード速度を見てみましょう。 PHP アプリケーションが内部イントラネットで実行されており、各クライアントが 100 MB/秒でサーバーに接続している場合、ダウンロード速度は問題になりません。ただし、サーバーが低速モデム ユーザーにもサービスを提供する必要がある場合は、コンテンツの圧縮を検討する価値があります。

ほとんどのブラウザは、IETF 標準に準拠したコンテンツ圧縮の gzip をサポートしています。つまり、コンテンツを gzip 圧縮してブラウザに送信すると、ページが表示される前にデータが解凍され、プロセス全体がユーザーに対して完全に透過的になります。サーバー側のコンテンツ圧縮に関しては、さまざまな方法が利用可能です。

たとえば、Remote Communications の無料の Apache モジュール mod_gzip には、このタイプのコンテンツ エンコードをサポートするブラウザ向けに静的 Web コンテンツを圧縮する機能があります。静的 Web コンテンツの大部分では、mod_gzip が非常にうまく機能します。 mod_gzip は Apache に簡単にコンパイルでき、DSO としても使用できます。 Remote Communications によると、mod_gzip は mod_php、mod_perl などの動的コンテンツも圧縮できます。

何度も試してみましたが、やはりうまくいかないようでした。 mod_gzip に関する多くのフォーラムや記事を読んだところ、この問題は mod_gzip の次のバージョン (おそらく 1.3.14.6f) で解決される予定のようです。それまでは、Web サイトの静的部分で mod_gzip を使用できます。

ただし、場合によっては動的コンテンツを圧縮する必要があるため、他の方法を見つける必要があります。 1 つの方法は、class.gzip_encode.php を使用することです。これは、PHP スクリプトの最初と最後でクラスの特定の関数を呼び出すことによって、ページのコンテンツを圧縮するために使用できる PHP クラスです。このソリューションを Web サイト レベルで実装する場合は、php.ini ファイルの auto_prepend および auto_append ディレクティブからこれらの関数を呼び出すことができます。

この方法は効果的ですが、高負荷の Web サイトでは間違いなくより多くのオーバーヘッドが発生します。このクラスの使用方法の詳細については、そのソース コードを参照してください。 ソースコードの説明は非常に完全で、著者はあなたが知る必要があるすべてを教えてくれます。

PHP 4.0.4 には新しい出力キャッシュ ハンドラー ob_gzhandler があります。これは前のクラスに似ていますが、その使用法は異なります。 ob_gzhandlerを使用する場合にphp.iniに追加する内容は以下のとおりです:

output_handler = ob_gzhandler;

このコード行により、PHP は出力キャッシュをアクティブにし、送信するすべてのものを圧縮します。何らかの理由で、このコード行を php.ini に追加したくない場合は、PHP ソース ファイルが配置されているディレクトリ内の .htaccess ファイルを使用して、デフォルトのサーバー動作 (圧縮なし) を変更することもできます。は次のとおりです:

php_value 出力ハンドラー ob_gzhandler

または、以下に示すように、PHP コードから呼び出します:

ob_start("ob_gzhandler");

出力キャッシュ ハンドルを使用する方法は確かに非常に効果的であり、サーバーに特別な負荷をかけません。ただし、Netscape Communicator では圧縮グラフィックのサポートが不十分であるため、すべてのユーザーが IE ブラウザを使用していることを保証できない限り、圧縮 JPEG および GIF グラフィックを無効にする必要があることに注意してください。一般に、この圧縮は他のすべてのファイルに対して機能しますが、特に特別なプラグインやデータ ビューアを使用する場合は、ブラウザごとに個別にテストすることをお勧めします。

前に紹介したさまざまなテクニックを使用すると、Web サイトのパフォーマンスを大幅に向上させることができますが、次の点に注意する必要があります。

PHP がパフォーマンスのボトルネックになる場合もあれば、そうでない場合もあります。データベースなど、アプリケーションのパフォーマンスに関連するあらゆる要素を注意深く観察してください。

この記事のテクノロジを使用するだけでは、一定の制限内でのみ Web サーバーのパフォーマンスを向上させることができます。したがって、PHP とそのキャッシュを非難する前に、サーバーをアップグレードする必要があるかどうか、また負荷分散テクノロジを導入できるかどうかを検討したほうがよいでしょう (後者には多額の投資が必要です)。

コンテンツ圧縮の力を過小評価しないでください。 100 MB/秒の LAN 接続では Web アプリケーションが非常に高速に応答することがわかりますが、モデム接続を使用しているユーザーは、100 Kb の HTML ページが大きすぎると不満を言うだけです。

この記事の PHP 入門がお役に立てば幸いです。



関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート