ホームページ バックエンド開発 PHPチュートリアル PHP アプリケーションの詳細な紹介 Speed_PHP チュートリアル

PHP アプリケーションの詳細な紹介 Speed_PHP チュートリアル

Jul 20, 2016 am 10:57 AM
php 一般的に 導入 アドバンテージ 応用 場合 私たち スピードアップ はい ほとんど 知る 詳しい 高速

高速性が PHP の最大の利点であることは誰もが知っています。一般に、PHP は常に Web コンテンツの動的な生成をサポートするのに十分な速度を備えており、多くの場合、PHP よりも高速な方法を見つけることさえできません。

しかし、大量のトラフィック、高負荷のアプリケーション、制限された帯域幅、その他のパフォーマンスのボトルネックを引き起こすさまざまな要因に直面しなければならない場合、Web サイトの動作を改善するために何かできることはないかと自問するかもしれません。おそらく、非常に目立たない無料モジュールを追加するだけで、PHP アプリケーションのパフォーマンスと Web サーバーの応答速度が大幅に向上するでしょう。

この記事では、PHP アプリケーションのパフォーマンスをさらに向上させ、ユーザーにより良いブラウジング エクスペリエンスを提供する方法について説明します。この記事では、PHP アプリケーションのパフォーマンスを向上させるためのさまざまなテクノロジーをコードの最適化、キャッシュ、コンテンツの圧縮の 3 つの側面から説明し、さまざまな分野でよく知られている製品を紹介します。

コードの最適化

まず、コードの最適化について見てみましょう。ここでのコードの最適化は、コードをより美しくすることを意味するものではないことに注意してください。これはおそらくすでに知られており、これ以上議論する必要はないためです。また、速度の問題をすでに考慮している場合は、すでに検討している可能性があります。 PHP ソース コードに変更を加え、いくつかの最適化を行いました。

ただし、Zend Optimizer などの一部のツールは、これらの複雑なタスクを自動的に完了するのに役立ちます。 Zend Optimizer は Zend Technologies から無料で入手できますが、ライセンス契約に同意する必要があり、GPL に基づいて配布されていないことに注意してください。 Zend Optimizer は、Zend Engine のランタイム コンパイルによって生成された中間コードを取得し、中間コードの実行効率が向上するように最適化します。

Zend Optimizer のインストール方法は非常に簡単で、使用しているプラ​​ットフォーム用に提供されているプリコンパイル済みバージョンをダウンロードし、次の 2 行のコードを php.ini に追加して、Web サーバーを再起動するだけです。

<ol class="dp-xml">
<li class="alt"><span><span class="attribute">zend_optimizer.optimization_level</span><span>=</span><span class="attribute-value">15</span><span> </span></span></li>
<li>
<span class="attribute">zend_extension</span><span>=</span><span class="attribute-value">"/path/to/ZendOptimizer.so"</span><span> </span>
</li>
<li class="alt">
<span class="attribute">zend_loader.enable</span><span>=</span><span class="attribute-value">Off</span><span> </span>
</li>
</ol>
ログイン後にコピー

ここでの追加の 3 行目のコードはオプションです。 zend_loader を無効にすると、Zend Optimizer が少し高速になるようです。そのため、この行を php.ini に追加する価値があります。注: zend_loader を無効にできるのは、Zend Encoder Runtime を使用していない場合のみです。

キャッシュ

巨大な PHP アプリケーションのパフォーマンスを向上させたい場合は、キャッシュを使用することも良い方法です。 Zend Cache、APC、Afterburner Cache など、多くのキャッシュ ソリューションが利用可能です。

これらの製品はすべて「キャッシュモジュール」に属します。 .php ファイルに対するリクエストが最初に発生すると、Web サーバーのメモリに PHP 中間コードが保存され、その後のリクエストには「コンパイルされた」バージョンで応答します。この方法では、ディスク アクセスが最小限に抑えられ (コードが読み取られて解析されている)、コードがメモリ内で直接実行されるため、サーバーがリクエストに非常に速く応答できるようになるため、アプリケーションのパフォーマンスが大幅に向上します。

もちろん、キャッシュ モジュールは PHP ソース ファイルの変更も監視し、必要に応じてページを再キャッシュします。これにより、ユーザーが古い PHP コードによって生成されたページを取得するのを防ぎます。キャッシュ モジュールはサーバーの負荷を大幅に軽減し、PHP アプリケーションの応答効率を向上させることができるため、負荷の高い Web サイトでの使用に非常に適しています。

これらのキャッシュ製品の選び方

Zend Cache は Zend Technologies の商用ソフトウェアであり、Zend Technologies は前述の PHP エンジンと無料の Zend Optimizer を提供する会社です。 Zend Cache は確かに当然の機能です。大規模な PHP ページの場合、最初の実行後に速度が向上し、サーバーで使用できるリソースが増えることが感じられます。残念ながら、この製品は無料ではありませんが、場合によっては、それでも十分な価値がある可能性があります。

Afterburner Cache は、Bware Technologies の無料のキャッシュ モジュールです。この製品は現在まだベータ版です。 Afterburner キャッシュは Zend Cache に似ていますが、(まだ) Zend Cache ほどパフォーマンスは向上せず、Zend Optimizer では動作しません。

APC は Alternative PHP Cache の略称で、Community Connect のもう 1 つの無料のキャッシュ モジュールです。すでに正式に使用できるほど安定した製品となっており、リクエストへの対応速度も大幅に向上するようだ。

コンテンツ圧縮

先ほど、PHP アプリケーションのパフォーマンスを向上させるいくつかの方法について説明しました。Web サイトが遅すぎると感じるもう 1 つの重要な要素を見てみましょう。それは、ダウンロード速度です。 PHP アプリケーションが内部イントラネットで実行されており、各クライアントが 100 MB/秒でサーバーに接続している場合、ダウンロード速度は問題になりません。ただし、サーバーが低速モデム ユーザーにもサービスを提供する必要がある場合は、コンテンツの圧縮を検討する価値があります。

ほとんどのブラウザは、IETF 標準に準拠した gzip によるコンテンツ圧縮をサポートしています。つまり、コンテンツを gzip 圧縮してブラウザに送信すると、ページが表示される前にデータが解凍され、プロセス全体がユーザーに対して完全に透過的になります。サーバー側のコンテンツ圧縮に関しては、さまざまな方法が利用可能です。

例如,来自Remote Communications的免费Apache模块mod_gzip就具有为支持这类内容编码的浏览器 压缩静态Web内容的能力。对于绝大多数静态Web内容,mod_gzip都非常有效。mod_gzip可以方便地编译到 Apache里面,也可以作为DSO使用。据Remote communications公司说,mod_gzip也能够压缩来自mod_php 、mod_perl等的动态内容。

我试了一次又一次,但看来还是不行。我看了许多关于mod_gzip的论坛和文章,看 来到了mod_gzip的下一个版本(可能是1.3.14.6f)这个问题有望得到解决。在此之前,我们可以在网站的静态 部分使用mod_gzip。

然而有时我们确实需要压缩动态内容,所以必须找找其他办法。有一种办法是使用class.gzip_encode.php ,这是一个可以用来压缩页面内容的PHP类,具体方法是在PHP脚本的开头和末尾调用该类的某些函数。如果要 在网站级实现这个方案,可以从php.ini文件的auto_prepend以及auto_append指令调用这些函数。

这种方法虽 然有效,但它无疑为高负载的网站带来了更多的开销。关于如何使用这个类的详细说明,请参见它的源代码。 它的源代码说明相当完善,作者告诉了你所有你必须知道的事情。

PHP 4.0.4有一个新的输出缓存句柄ob_gzhandler,它与前面的类相似,但用法不同。使用 ob_gzhandler时要在php.ini中加入的内容如下:

<ol class="dp-c"><li class="alt"><span><span>output_handler = ob_gzhandler ; </span></span></li></ol>
ログイン後にコピー

这行代码使得PHP激活输出缓存,并压缩它发送出去的所有内容。如果由于某种原因你不想在php.ini中加上这行代码,你还可以通过PHP源文件所在目录的.htaccess文件改变默认的服务器行为(不压缩),语法如下 :

<ol class="dp-c"><li class="alt"><span><span>php_value output_handler ob_gzhandler </span></span></li></ol>
ログイン後にコピー

或者是从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对压缩图形的支持不佳,因此除非你能够保证所有用户都使用IE浏览器,否则你 应该禁止压缩JPEG和GIF图形。一般地,对于所有其他文件,这种压缩都有效,但建议你针对各种浏览器都分别 进行测试,特别是当你使用了特殊的插件或者数据查看器时这一点尤其重要。

使用前面介绍的各种技术,你能够显著地改善网站的性能表现,但应该注意的是:

PHP可能是、也可能不是性能瓶颈所在。务必仔细地观察每一个和应用性能有关的因素,比如数据库等。

单纯使用本文技术只能在一定限度之内提高Web服务器的性能。因此在归咎于PHP以及它的缓存之前,不妨看看是否应该升级服务器以及是否可以引入负载平衡技术(后者需要较大的投资)。

不要低估内容压缩的作用。虽然你在100 MB/s的LAN连接下看到Web应用响应非常迅速,但使用Modem 连接的用户不会,他们只会抱怨你那100 Kb的HTML页面实在过于庞大。

希望通过本文对于PHP的介绍,能够给你带来帮助。


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/445740.htmlTechArticle我们都知道,速度快是 PHP 最大的优点。一般情况下PHP总是具有足够的速度支持Web内容动态生成,许多时候你甚至无法找出比它更快的方法...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

session_start()が複数回呼び出されるとどうなりますか? session_start()が複数回呼び出されるとどうなりますか? Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

session_start()関数の重要性は何ですか? session_start()関数の重要性は何ですか? May 03, 2025 am 12:18 AM

session_start()iscrucialinphpformangingusersions.1)itInitiateSanewsessionifnoneExists、2)resumesanexistingsession、および3)SetSessionCookieforcontinuityAcrossRequests、ApplicationslicationSliviseSlikeUserauthicationAnticatent。

作曲家:AIを介したPHP開発の援助 作曲家:AIを介したPHP開発の援助 Apr 29, 2025 am 12:27 AM

AIは、作曲家の使用を最適化するのに役立ちます。特定の方法には次のものが含まれます。1。依存関係管理の最適化:AIは依存関係を分析し、最適なバージョンの組み合わせを推奨し、競合を減らします。 2。自動コード生成:AIは、ベストプラクティスに準拠したComposer.jsonファイルを生成します。 3.コードの品質を改善する:AIは潜在的な問題を検出し、最適化の提案を提供し、コードの品質を向上させます。これらの方法は、開発者が効率とコードの品質を向上させるのに役立つ機械学習および自然言語処理技術を通じて実装されています。

データ処理と計算にMySQL関数を使用する方法 データ処理と計算にMySQL関数を使用する方法 Apr 29, 2025 pm 04:21 PM

MySQL関数は、データ処理と計算に使用できます。 1.基本的な使用には、文字列処理、日付計算、数学操作が含まれます。 2。高度な使用法には、複数の関数を組み合わせて複雑な操作を実装することが含まれます。 3.パフォーマンスの最適化では、Where句での機能の使用を回避し、GroupByおよび一時テーブルを使用する必要があります。

H5:HTML5の重要な改善 H5:HTML5の重要な改善 Apr 28, 2025 am 12:26 AM

HTML5は5つの重要な改善をもたらします。1。セマンティックタグにより、コードの明確性とSEO効果が向上します。 2.マルチメディアサポートは、ビデオとオーディオの埋め込みを簡素化します。 3。フォームエンハンスメントは、検証を簡素化します。 4.オフラインおよびローカルストレージにより、ユーザーエクスペリエンスが向上します。 5。キャンバスとグラフィック機能は、Webページの視覚化を強化します。

作曲家:PHP開発者のパッケージマネージャー 作曲家:PHP開発者のパッケージマネージャー May 02, 2025 am 12:23 AM

Composerは、PHPの依存関係管理ツールであり、Composer.jsonファイルを介してプロジェクトの依存関係を管理しています。 1)依存関係情報を取得するためのComposer.jsonを解析する。 2)依存関係を解析して、依存性ツリーを形成します。 3)PackagistからVendorディレクトリへの依存関係をダウンロードしてインストールします。 4)Composer.Lockファイルを生成して、依存関係バージョンをロックして、チームの一貫性とプロジェクトの保守性を確保します。

cでタイプの特性を使用する方法は? cでタイプの特性を使用する方法は? Apr 28, 2025 pm 08:18 PM

Typetraitsは、Cでコンパイル時間タイプのチェックと操作に使用され、コードの柔軟性とタイプの安全性が向上します。 1)タイプの判断は、STD :: iS_integralおよびstd :: is_floating_pointを介して実行され、効率的なタイプチェックと出力を達成します。 2)std :: is_triviely_copyableを使用して、ベクトルコピーを最適化し、タイプに従って異なるコピー戦略を選択します。 3)コンパイル時間の意思決定、タイプの安全性、パフォーマンスの最適化、コードの複雑さに注意してください。タイプトライトの合理的な使用は、コードの品質を大幅に改善できます。

mysqlの文字セットと照合ルールを構成する方法 mysqlの文字セットと照合ルールを構成する方法 Apr 29, 2025 pm 04:06 PM

MySQLで文字セットと照合を構成する方法は次のとおりです。1。サーバーレベルでの文字セットとコレクションの設定:setNames'utf8 '; setCharacterSetutf8; setCollat​​ion_connection = 'utf8_general_ci'; 2。特定の文字セットと照合を使用するデータベースを作成します:createdatabaseexample_dbcharactersetutf8collat​​eutf8_general_ci; 3.テーブルを作成するときに文字セットとコレクションを指定:createTableExample_table(idint

See all articles