ホームページ >バックエンド開発 >PHPチュートリアル >PHP エンジンをフルスピードで実行するための 3 つのトリック_PHP チュートリアル
作为流行的 Web 编程语言, PHP 的最大优势就是速度。 PHP已经在这方面做的非常好了,你几乎找不到比它更快的脚本编程语言了。但是如果你的应用负荷很大,而带宽又比较小,或者有其他的瓶颈影响你的服务器性能,那么,你不妨试试笔者为你开出的几个药方,看看是否灵验。
一、代码优化
一谈到代码优化,或许你想到的就是整齐明了的代码,但是本文的意思却不是在此,因为如果要寻求速度的话,就要对PHP 源码作相应的调整。一般说来就是去掉多余的注释,让代码不可读。但是这对于一个具有良好素养的程序员来说,简直就是不可思议的。好在Zend Technologies 公司发布了Zend 优化引擎可以帮助你做到这一点。它现在是免费的,但是你必须遵循 Zend Optimizer 许可。这个产品可以对引擎产生的中间代码进行优化。
安装这个引擎比较简单,下载对应平台的版本以后,解开压缩文件,然后在 php.ini 文件里面加上下面两行,重新启动 Web 服务器,就搞定了。
zend_optimizer.optimization_level=15 zend_extension="/path/to/ZendOptimizer.so" zend_loader.enable=Off |
如果是 Win32 平台的应该是:
zend_optimizer.optimization_level=15 zend_extension_ts="C:\path\to\ZendOptimizer.dll" zend_loader.enable=Off |
実際には、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 を使用することです。これにより、上記のクラスと同じ効果を達成できます。
output_handler = ob_gzhandler; これにより、PHP が有効になります。出力バッファリングとすべての出力の圧縮。すべてのコンテンツを圧縮して出力したくない特別な理由がある場合は、.htaccess ファイルに次の行を追加して、対応するディレクトリ内のファイルを圧縮できます。
php_value Output_handler ob_gzhandler
PHP コードに直接追加することもできます:
ob_start("ob_gzhandler");
この圧縮テクノロジは非常に効果的ですが、Netscape Communicator ユーザーにとっては、グラフィックスを使用できないためです。圧縮ファイルなので完全に送信されていないようですので、IEではjpegやgifファイルの圧縮をオフにする必要があります。
IV. 結論
この記事で説明した手法を使用すると、Web サイトのパフォーマンスが向上しますが、次の点にご注意ください:
◆PHP がボトルネックの原因ではない可能性があります。他の原因 (例: データベース) を注意深く確認してください◆サーバーのパフォーマンスを最高の状態に調整することはできません。したがって、PHP とそのバッファリングについて文句を言う前に、サーバーをアップグレードする時期が来たのか、それとも動的負荷分散テクノロジーを採用する時期が来たのかを検討してください。 ◆ コンテンツの圧縮を過小評価しないでください。100 MB のイントラネット上の PHP アプリケーションの速度が向上した場合は、モデム ユーザーが 100 Kb の HTML ページについて不満を抱いていることを忘れないでください。