PHPを使用する最大の利点は、その速度の速さです。一般に、PHP は常に Web コンテンツの動的な生成をサポートするのに十分な速度を持っていますが、多くの場合、PHP よりも高速な方法を見つけることさえ不可能です。ただし、大量のアクセス、高負荷のアプリケーション、制限された帯域幅、およびパフォーマンスのボトルネックを引き起こすその他のさまざまな要因に直面した場合は、PHP のパフォーマンスを向上させる方法を検討する必要があります。
1. コードの最適化
コードの最適化は、単にクリーンで明確なコードを記述するだけではなく、コードを特定の単純化することも意味します。 Zend Optimizer を使用すると、これらの面倒なタスクを自動的に完了できます。 Zend Optimizer は、Zend Technologies の Web サイト http://www.zend.com/ から無料で入手できますが、GPL に基づいて配布されていないため、ライセンス契約に同意する必要があります。その原理はシンプルで、Zend エンジンによって生成された中間コードを検出し、それを最適化することでより高い実行速度を実現します。
Zend Optimizer を使用すると、複雑な PHP ソース プログラムの実行効率がすぐに向上しますが、最適化されたコードの可読性が低下し、コードの修正が困難になるという欠点があります。
Zend Optimizer のインストール方法は非常に簡単で、ユーザーが使用するプラットフォームに応じて適切なプリコンパイル済みバージョンをダウンロードし、次の 2 行のコードを php.ini ファイルに追加して、Web サーバーを再起動するだけです。
zend_optimizer.optimization_level=15
zend_extension=″/path/to/ZendOptimizer.so″
zend_loader.enable=オフ
zend_loader を無効にすると最適化が速くなるため、コードの 3 行目の追加はオプションです。 zend_loader は、Zend Encoder Runtime が使用されていない場合にのみ無効にできることに注意してください。
2. キャッシュを使用する
PHP プログラムのサイズが大きい場合、速度を向上させる方法はキャッシュを使用することです。 Zend Cache、APC、Afterburner Cache など、利用可能なキャッシュ ソリューションが多数あります。
上記はすべて「キャッシュモジュール」です。初めて PHP ファイルが呼び出されるとき、キャッシュ モジュールは PHP ソース コードから中間コードを生成し、これらの中間コードを Web サーバーのメモリに保存します。これらのファイルを後で呼び出すと、メモリ内の「コンパイルされた」コードを直接使用できます。この方法では、ディスク アクセスが最小限に抑えられ (コードが読み取られて解析されている)、コードがメモリ内で直接実行されるため、サーバーがリクエストに非常に速く応答できるようになるため、アプリケーションのパフォーマンスが大幅に向上します。
もちろん、キャッシュ モジュールは PHP ソース ファイルの変更も監視し、必要に応じてページを再キャッシュします。これにより、古い PHP コードによって生成されたページをユーザーが受け取ることを防ぎます。キャッシュモジュールはサーバーの負荷を大幅に軽減し、PHP アプリケーションの応答効率を向上させることができるため、負荷の高い Web サイトに非常に適しています。
Zend Cache は、Zend Technologies によって開発された商用ソフトウェアです。最初の実行後、PHP ページの実行速度はすぐに大幅に向上し、サーバーの空きリソースが増加します。欠点は無料ではないことですが、価格/パフォーマンスの比率は依然として非常に高いです。
Afterburner Cache は、Bware Technologies によって開発された無料のキャッシュ モジュールです。機能は基本的には Zend Cache と同じですが、パフォーマンスの向上という点では Zend Cache には及びません。
APC (Alternative PHP Cache) は、Community Connect によって開発されたもう 1 つの無料のキャッシュ モジュールです。現在のバージョンは 2.0.4 で、http://pecl.php.net/package/APC から入手できます。製品アプリケーションの場合、そのパフォーマンスは非常に安定しており、リクエストへの応答速度も大幅に向上します。
3. Web コンテンツを圧縮する
サイトのアクセス速度に影響を与えるもう 1 つの重要な要素が、ダウンロード速度です。解決策は、Web コンテンツを圧縮することです。プレーン テキスト コンテンツの場合、HTTP 圧縮テクノロジを使用して元のサイズの 40% 未満に圧縮できるため、データ送信を 60% 以上節約できます。 Web サーバーは圧縮により CPU 使用率をわずかに増加させますが、送信に使用されるネットワーク IO を大幅に節約できます。
IETF 仕様によれば、ほとんどのブラウザはコンテンツ圧縮に gzip 圧縮アルゴリズムの使用をサポートしています。つまり、gzip を使用して最初に Web ページのコンテンツを圧縮し、それをクライアントのブラウザーに送信すると、ブラウザーはデータを受信するときに自動的に解凍して、ページを表示します。このプロセスはユーザーに対して完全に透過的です。同様に、Web ページのコンテンツを圧縮するためのさまざまな方法があります。
Mod_gzip は、オープン ソースの標準 Apache モジュールであり、インターネット コンテンツ アクセラレーション モジュールとも呼ばれます。 Apache でコンパイルすることも、DSO として使用することもできます。通常のブラウジングプロセスと比較して、トラフィックを約 40% 節約できます。 Mod_gzip は、HTML や XML などの静的コンテンツを圧縮するだけでなく、SQL、Java、WML、VRML などの動的に生成されたコンテンツをサーバー側でリアルタイムに圧縮して送信することもでき、その圧縮効率は一般に驚くべきものです。 60%~85%。
動的 Web ページのコンテンツを圧縮するには、class.gzip を使用して .php ファイルをエンコードすることもできます。class.gzip は、PHP スクリプトの最初と最後でいくつかの関数を呼び出すことによって Web ページのコンテンツを圧縮します。サイト全体でこのような圧縮が必要な場合は、php.ini ファイルの auto_prepend および auto_append でこれらの関数を呼び出すことができますが、ある程度のシステム オーバーヘッドが発生します。
PHP4.0.4 では、新しい出力バッファ処理メソッド ob_gzhandler が導入されています。その機能は class.gzip とまったく同じです。違いは、php.ini ファイルに直接追加できることです。
出力ハンドラー = ob_gzhandler;
これにより、PHP の出力バッファリング機能が有効になり、送信前にコンテンツが圧縮されます。ここで設定したくない場合は、必要に応じてデフォルト設定 (圧縮なし) を変更してください。圧縮する必要がある PHP ソース プログラム ディレクトリ内の .htaccess ファイルを変更するだけです。 構文は次のとおりです。
4. その他のスキル
(4) 配列の走査には while の代わりに foreach を使用します。foreach の効率は while ループの効率よりも大幅に高く、reset 関数を呼び出す必要はありません。
http://www.bkjia.com/PHPjc/371803.html