ホームページ  >  記事  >  バックエンド開発  >  PHP エンジンを高速に実行するための 3 つのコツ_PHP チュートリアル

PHP エンジンを高速に実行するための 3 つのコツ_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 10:57:33802ブラウズ

PHP C、Java、Perl、PHP の革新的な構文を組み合わせた独自の構文。 CGI や Perl よりも高速に動的 Web ページを実行できます。 PHPで作成された動的ページは、HTML文書の中にプログラムを埋め込んで実行するため、HTMLタグを完全に生成するCGIに比べて実行効率が非常に高くなります。 PHP エンジンを高速に実行する 3 つの方法を次に示します。

1. コードの最適化

コードの最適化というと、整然とした明確なコードを思い浮かべるかもしれませんが、これはこの記事の意味ではありません。速度を追求したい場合は、それに対応する調整を行う必要があるからです。 PHPソースコードの調整。一般に、コードを判読できなくするために、冗長なコメントは削除されます。しかし、優れた資質を持つプログラマーにとって、これは驚くべきことです。幸いなことに、ZendTechnologies はこれを支援する Zend 最適化エンジンをリリースしました。現在は無料ですが、Zend Optimizer ライセンスに従う必要があります。本製品は、エンジンが生成する中間コードを最適化することができます。

このエンジンのインストールは比較的簡単で、プラットフォームに対応するバージョンをダウンロードした後、圧縮ファイルを解凍し、php.ini ファイルに次の 2 行を追加し、Web サーバーを再起動すれば完了です。

<ol class="dp-c">
<li class="alt"><span><span>zend_optimizer.optimization_level=15  </span></span></li>
<li>
<span>zend_extension=</span><span class="string">"/path/to/ZendOptimizer.so"</span><span> </span>
</li>
<li class="alt"><span>zend_loader.enable=Off </span></li>
</ol>

Win32 プラットフォームの場合は、次のようにする必要があります:

<ol class="dp-c">
<li class="alt"><span><span>zend_optimizer.optimization_level=15  </span></span></li>
<li>
<span>zend_extension_ts=</span><span class="string">"C:\path\to\ZendOptimizer.dll"</span><span> </span>
</li>
<li class="alt"><span>zend_loader.enable=Off </span></li>
</ol>

実際、3 行目はオプションです。 zend_loader をオフにすると速度が少し向上するようなので、この 3 行目を php.ini に追加する価値があります。これをオフにする前提条件は、Zend 暗号化プログラムを使用していないことであることに注意してください。

2. バッファリング

さらに速度を向上させたい場合は、バッファリング技術の使用を検討する必要があります。 Zend Cache (ベータ版)、APC、Afterburner キャッシュ、jpCache などの代替ソリューションがいくつかあります。

上記はバッファ モジュールで、.php ファイルに対する最初のリクエストによって生成された中間コードを Web サーバーのメモリに保存し、後続のリクエストに対して「コンパイルされた」バージョンを返します。これにより、ディスクの読み取りと書き込み、およびメモリ内でのすべての作業が軽減されるため、アプリケーションのパフォーマンスが大幅に向上します。このような製品は数多くありますが、どれを選択すればよいでしょうか。

  • Zend Cache は優れた商用製品です。これらの大きな PHP ページを初めてロードすると、明らかに速度が向上し、サーバーがより多くのリソースを残すようになります。残念ながら、この製品にはお金がかかりますが、場合によってはお金をケチりたくない場合があります。
  • Afterburner Cache は Bware Technologies の製品で、まだベータ版のようですが、Zend Cache ほど良い結果は得られず、Zend 最適化エンジンとも連携できません。無料なのでこのモジュールを採用しました。
  • APC (Alternative PHP Cache) も Community Connect がリリースした無料モジュールで、本番環境でも使用できるようです。

3. Web コンテンツの圧縮

ますます混雑するネットワークにとって、帯域幅を節約することは水を節約することと同じくらい価値があります。 IETF 標準によれば、ほとんどのブラウザは gzip を使用して圧縮されたコンテンツをサポートする必要があります。つまり、gzip 圧縮されたコンテンツをブラウザに送信すると、ブラウザはデータを透過的に解凍します。

mod_gzip は、Remote Communications によって起動された無料の Apache モジュールで、静的な Web コンテンツを圧縮してブラウザに送信できます。ほとんどの静的 Web ページには、このモジュールが適しています。 Remote Communications の担当者は、このモジュールは mod_php、mod_perl、mod などによって生成されるすべての動的コンテンツをサポートしていると言っていますが、mod_gzip メーリング リストから判断すると、まだ機能していないようです。 1.3.14.6fまで。

動的コンテンツを圧縮したい場合は、スクリプトの最初と最後で使用される PHP クラス、class.gzip_encode.php を使用できます。 Web サイト全体では、php.ini の auto_prepend および auto_append 内の関数が呼び出されます。詳細については、このクラスのプログラムを参照してください。このプログラムには十分なコメントがあり、著者がほぼすべてを説明しています。ただし、使用する前に、zlib をサポートするように PHP をコンパイルする必要があります。

PHP 5 の場合、新しい解決策は ob_gzhandler を使用することです。これにより、上記のクラスと同じ効果を得ることができます。次の文を php.ini に追加するだけです:

<ol class="dp-c"><li class="alt"><span><span>output_handler = ob_gzhandler ; </span></span></li></ol>

これにより、PHP は出力バッファリングを有効にし、すべての出力を圧縮できます。すべてのコンテンツを圧縮して出力したくない特別な理由がある場合は、.htaccess ファイルに次の行を追加して、対応するディレクトリ内のファイルを圧縮できます。

php_value Output_handler ob_gzhandler

PHP コードに直接追加することもできます:

<ol class="dp-c"><li class="alt"><span><span>ob_start(</span><span class="string">"ob_gzhandler"</span><span>); </span></span></li></ol>

この圧縮技術は非常に効果的ですが、Netscape Communicator ユーザーの場合、グラフィック ファイルを圧縮できないため、完全には送信されないようです, そのため、jpeg および gif ファイルの圧縮をオフにする必要がありますが、IE にはこの問題はありません。

4. 結論

この記事で説明した手法を使用すると、Web サイトのパフォーマンスが向上するはずですが、次の点に注意してください:

PHP がボトルネックの原因ではない可能性があります。他の原因 (例: データベース) を注意深く確認してください。 )

サーバーのパフォーマンスを最高の状態に調整することはできません。したがって、PHP とそのバッファリングについて文句を言う前に、サーバーをアップグレードする時期が来たのか、それとも動的負荷分散テクノロジーを採用する時期が来たのかを検討してください。

コンテンツの圧縮を過小評価しないでください。100 MB のイントラネット上の PHP アプリケーションの速度が向上している一方で、モデム ユーザーが 100 KB の HTML ページについて不満を抱いていることを忘れないでください。

上記の内容のご紹介がお役に立てれば幸いです。


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445766.html技術記事 PHP の独自の構文は、C、Java、Perl、および PHP 独自の革新的な構文を組み合わせたものです。 CGI や Perl よりも高速に動的 Web ページを実行できます。 PHP やその他のプログラミング言語で作成された動的ページ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。