ホームページ > php教程 > php手册 > PHP チュートリアル.応用例 11

PHP チュートリアル.応用例 11

WBOY
リリース: 2016-06-21 09:14:34
オリジナル
937 人が閲覧しました

チュートリアル|アプリケーション例

PHP アプリケーションの速度の概要
PHP の最大の利点の 1 つは、明らかにその速度です。一般に、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 サーバーを再起動するだけです。 .optimization_level=15
zend_extension="/path/to/ZendOptimizer.so"
zend_loader.enable=Off

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

キャッシュ
巨大な 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 Output_handler ob_gzhandler


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

ob_start("ob_gzhandler")


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



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