ホームページ > バックエンド開発 > PHPチュートリアル > [php] PHP の実行速度を上げるためのヒントを共有します

[php] PHP の実行速度を上げるためのヒントを共有します

WBOY
リリース: 2016-06-13 13:09:13
オリジナル
834 人が閲覧しました

[php] PHP の実行速度を向上させるためのヒントを共有します

PHP を使用する最大の利点はその速度です。一般に、PHP は常に Web コンテンツの動的な生成をサポートするのに十分な速度を持っていますが、多くの場合、PHP よりも高速な方法を見つけることさえ不可能です。ただし、大量のアクセス、高負荷のアプリケーション、制限された帯域幅、およびパフォーマンスのボトルネックを引き起こすその他の要因に直面した場合は、PHP のパフォーマンスを向上させる方法を検討する必要があります

?

1. コードの最適化

コードの最適化では、単にクリーンで明確なコードを記述するだけでなく、コードをある程度まで簡素化することも必要です。 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 (代替 PHP キャッシュ) はコミュニティによって開発されています Connect Company によって開発されたもう 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 でこれらの関数を呼び出すことができますが、占有されてしまいます。 特定のシステムのオーバーヘッド。

PHP 4.0.4 では、新しい出力バッファ処理メソッド ob_gzhandler が導入されています。その機能は class.gzip とまったく同じです。構文は次のとおりです。

output_handler = ob_gzhandler;

これにより、PHP の出力バッファリング機能が有効になり、送信前にコンテンツが圧縮されます。ここで設定したくない場合は、必要に応じてデフォルト設定 (圧縮なし) を変更します。構文は次のとおりです。

php_value 出力ハンドラー ob_gzhandler

または、PHP コードで直接呼び出します:

ob_start("ob_gzhandler");

出力バッファリングの効果は実に理想的であり、サーバーに追加のシステム オーバーヘッドをもたらしません。注意すべき点の 1 つは、Netscape Communicator は画像圧縮をサポートしていないことです。したがって、訪問者が Internet Explorer を使用していることがわかっていない限り、jpeg および gif 画像の圧縮を無効にする必要があります。

4 その他のヒント

プログラミングするときは、PHP を高速化するためのヒントをいくつか使用することもできます。

(1) i=i+1 の代わりに i+=1 を使用することは、C/C++ の習慣に従っており、比較的効率的です。

(2) 可能な限りPHPの内部関数を使用する。

(3) シングルクォートで囲まれた文字列が使用できる場合は、シングルクォーテーションで囲まれた文字列を使用するようにしてください。一重引用符で囲まれた文字列は、二重引用符で囲まれた文字列よりも効率的です。

(4) 配列の走査には while の代わりに foreach を使用します。foreach の効率は while ループの効率よりも大幅に高く、reset 関数を呼び出す必要はありません。

?

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