ホームページ  >  記事  >  バックエンド開発  >  PHP ウェブサイトを高速化する 3 つの「ソフト」トリック_PHP チュートリアル

PHP ウェブサイトを高速化する 3 つの「ソフト」トリック_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:07:01798ブラウズ

Text/Li Kuncheng

インターネットの普及に伴い、Web サイトはあらゆる業界に浸透しました。しかし、現在の専用線のコストは多くの企業や個人にとって負担できないため、多くの Web サイトでは共有帯域幅が推奨されるソリューションとなっています。コストは削減されましたが、すぐに新しい問題が発生しました。つまり、共有帯域幅の速度が非常に遅く、場合によっては耐えられないほどでした。ウェブサイトをどのように高速化するかが人々の関心事となっています。著者は、読者の役に立つことを願って、個人的な実践に基づいたいくつかのソフト手法の実践的な応用について話します。


著者はLinuxオペレーティングシステムとApache+PHPウェブサイト構築方法を使用しています。


コードの最適化


プログラマーは通常、適切なプログラミング習慣を身につけ、冗長コードの発生を最小限に抑える必要があります。現在、一般的な HTML ファイルの場合、これは冗長な重みを減らすために使用されます。 PHP プログラム用のツールは数多くありますが、そのようなツールはそれほど多くはありませんが、Zend Technologies の Zend Optimizer は非常に優れたコード最適化ツールであり、Zend Technologies の Web サイトから無料で入手できます。 Zend Optimizer の使用も非常に簡単で、ダウンロードした ZendOptimizer-1[1].0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz ファイルを解凍し、ZendOptimizer.so ファイルを /usr/local /Zend/ にコピーするだけです。 lib ディレクトリに移動し、php.ini ファイルを変更して最後に次の行を追加します。

PHP ウェブサイトを高速化する 3 つの「ソフト」トリック_PHP チュートリアル
Zend Optimizer が適切に動作していることが表示されます

zend_optimizer.optimization_level=15

zend_extension="/usr/local/ Zend /lib/ ZendOptimizer.so"

設定が完了したら、Apacheサーバーを再起動してPHPプログラムを書きます:



Phpinfo();

?>

一般的に言えば、Zend Optimizerはシステムの効率が 30% ~ 40% 向上します。これはユーザーが最も気にしていることです。


圧縮ページ


HTTP1.1プロトコルはページ圧縮送信をサポートしています。これは、サーバーがページを圧縮してクライアントに送信し、その後クライアント上でページを解凍してクライアントに表示することを意味します。サーバー側で送信する方法は 2 つあります。1 つは、送信するときに、圧縮されたページをクライアントに送信するだけです。これは、静的な Web ページが多い場合に適しています。ほとんどのサイトでは、動的ページの数が多くなりますが、クライアントに送信されるページの多くは実際には存在しないため、クライアントからのユーザー要求を受信したときにサーバーによって動的に生成されるため、この方法は適していません。生成された動的ページは、圧縮してクライアントに送信する前に、まず生成する必要があります。 PHP バージョン 4.0.4 以降では、php.ini ファイルに設定行「output_handler = ob_gzhandler」を追加できるため、動的に生成された各ページはクライアントに送信される前に圧縮されますが、 PHP公式サイト, このパラメータは、PHPの動作異常を引き起こしやすいため、「zlib.output_compression = on」パラメータと同時に使用することはできません。また、PHPプログラムの動的に生成されたページのみを圧縮できます。多数の静的ページ、特に画像ファイルでは機能しません。ただし、mod_gzip モジュールは、静的ページをクライアントに送信する前に圧縮する機能を Apahe に提供します。その圧縮率は最大 10 に達し、通常の状況では 3 に達する可能性があります。これは、Web サイトの送信速度が低下することを意味します。 3倍以上に増加しました。 mod_gzip 関数を使用するには、まず mod_gzip.c または mod_gzip.so ファイルをダウンロードする必要があります。.c ファイルをダウンロードする場合は、使用する前に Apache が提供するツールを使用して .so ファイルに変換する必要があります。方法は次のコマンドを実行します:

-i -a mod_gzio.c

cp mod_foo.so/path/to/apache/libexec/mod_gzip.so

chmod 755/path/to/apache/libexec/mod_foo .so

システムは /path/to にあります モジュールは /apache/etc/httpd.conf で自動的に有効になります .so ファイルをダウンロードした場合は、ファイルを対応するディレクトリにコピーし、LoadModule gzip_module libexec を追加します。 httpd.conf ファイル内の /mod_gzip.so を変更してモジュールを有効にします。 2 つの点に注意する必要があります。まず、.so ファイルを使用する場合は、Apache に mod_so モジュールを含める必要があります (httpd -l コマンドを使用して、モジュールが有効かどうかを確認できます)。 Apache のバージョンについては、ダウンロードしたバージョンが使用している Apache と一致しているかどうかに注意してください。.c ファイルであれば、そのような問題はありません。モジュールが有効になったら、それに応じて Apache を設定する必要があります。 httpd.conf ファイルにいくつかのパラメータを追加する必要があります:

mod_gzip_on Yes (モジュールが有効かどうか)

mod_gzip_minimum_file_size 1002 (最小圧縮ファイルサイズ)

mod_gzip_maximum_file_size 0 (圧縮ファイルの最大サイズ、0は制限なしを意味します)

mod_gzip_maximum_inmem_size 60000 (占有できる最大メモリ)

mod_gzip_item_include file "..gif102SINA>DOUBLE_QUOTATION (gifで終わるファイルは圧縮して送信する必要があります)

mod_g zip_item_ インクルード ファイル".txt102SINA>DOUBLE_QUOTATION

mod_gzip_item_include ファイル ".html102SINA>DOUBLE_QUOTATION

mod_gzip_item_exclude ファイル ".css102SINA>DOUBLE_QUOTATION

圧縮モジュールを使用した後、サイトにアクセスすると、対応する情報がログ ファイルに記録されます。 「mod_gzip :OK In:file_length Out:gzip file_length」と、このページの送信にgzip関数を使用することを示し、入力ファイルと出力ファイルのサイズについて説明します。


ファイルキャッシュ


この方法は通常、PHP や PERL などの CGI プログラムに使用されます。これらのプログラムには、ユーザーのリクエストを受け取った後、すぐに結果がユーザーに返されるのではなく、インタプリタの後に結果が返されるという共通の特徴があるためです。解釈と実行後に実行結果をクライアントに返します。これには通常、データベースへのアクセスが伴います。これにより問題が発生します。2 人のユーザーが同じページにアクセスすると、システムは 2 つのリクエストを別々に処理しますが、実際には 2 つの操作がまったく同じである可能性があり、目に見えないほどシステムの負荷が増加します。したがって、通常の解決策は、ユーザーが初めてページにアクセスしたときにシステム メモリにスペースを空け、ユーザーが再度そのページにアクセスしたときに、システムがそのページを直接削除することです。再解釈や実行を行わずにメモリから呼び出されるこのメモリ空間はキャッシュと呼ばれます。現在、人気のあるキャッシュ管理プログラムは 2 つあり、1 つは FastCGI で、もう 1 つは Zend Technologies の Zend Cache です。 FastCGI は主に Perl、C、C++ などの CGI スクリプト プログラム用に設計されており、クライアントからのリクエストは FastCGI アプリケーション サービス プログラムに送信され、その結果がキャッシュに返されます。ユーザー。一般的な CGI プログラムはこの時点でプロセスを終了して自動的に終了しますが、FastCGI プロセスはこの時点で維持され続け、新しいユーザー要求を受信した後に新しいプロセスを作成する必要はなく、ユーザー要求を処理できます。言い換えれば、CGI プログラムはプロセスを確立して順番に実行し、その後終了しますが、FastCGI プログラムは順番に実行され、永久にループします。

PHP ウェブサイトを高速化する 3 つの「ソフト」トリック_PHP チュートリアル

Zend Cache 管理インターフェイス

FastCGI を使用したい場合は、まず FastCGI を Apache にコンパイルする必要があります。方法は非常に簡単なので、ここでは説明しません。また、http.conf で設定する必要があります。ファイル:

AddHandler fastcgi-script .fcg .fcgi .fpl

Options ExecCGI Indexes include

このようにして、FastCGI は正常に動作するようになります。 以下は、FastCGI Programmer's Manual のプログラム例です。

#!fcgi-savvy -perl

FCGIを使う ; #Initialization

#初期化コード

= 0;

# 応答ループ

while (FCGI::accept>= 0) {

#FastCGIはループ本体を作成します

print " type: text/html " ; #プログラム実行

print "

FastCGIデモページ(perl) ";

print "

FastCGIデモページ(perl) ";

print "これは FastCGI サーバーから送信されています。
";

print "publish152.internal.sina.com.cn から で実行されています。 EM><BR> " ;

++;

print "これは接続番号です ";

}

FastCGIはPerlなどのCGIプログラムにとっては非常に強力ですが、PHPプログラムにとっては本当に無力であり、言い換えれば、プログラミング中にコンテンツを追加するには、何らかの人的要因が必要です。対照的に、Zend Technologies の Zend Cache の PHP 用キャッシュ機能は非常に強力で、ソフトウェアがインストールされている限り、プログラマはコードを追加することなく他の PHP プログラムを作成するのと同じようにキャッシュ機能を実装でき、これはシステムにとって非常に有益です。便利。有料のソフトウェアです。キャッシュ機能があり、次のようなグラフィカル インターフェイスを通じてキャッシュを管理できます。 Zend Cache の設定、現在のステータスの表示、Zend Cache 機能の開始と停止を行うことができる [Cache Control] ページ、Zend Cache のコンテンツなど。ファイルのステータスは、クリック数とキャッシュ サイズに基づいて選択することもできます。ベンチマーク ページでは、Zend Cache のキャッシュ効果をテストし、1 秒あたりに完了した PHP リクエストの数をテストできます。

そのインストールと検証方法は基本的に Zend Optimizer と同じなので、ここでは詳しく説明しません。興味のある読者は、その強力な機能と便利な管理方法を参照してください。

上記はウェブサイトを高速化するためのいくつかの一般的な方法であり、ウェブサイトごとに必要な方法が異なり、対応する高速化プランも異なりますが、一般的に言えば、読者が使用できる上記の 3 つの方法にすぎません。自らのニーズに合わせて、実際の状況と具体的な問題を詳細に分析します。

注: 一部のクライアント ソフトウェアは特定の機能をサポートしていない可能性があるため、クライアント ソフトウェアの複雑さを考慮してください。たとえば、mod_gzip はページを圧縮しますが、クライアントが Netscape を使用している場合、圧縮されたページを受信できないため機能しません。圧縮が解除されると、ページが正しく表示されなくなります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/315171.html技術記事 Text/Li Kuncheng インターネットの普及に伴い、Web サイトはあらゆる業界に浸透しました。しかし、現在の専用線のコストは多くの企業や個人にとって負担できないため、共有帯域幅が多くの Web サイトにとって問題となっています...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。