Opcacheの理解

尊渡假赌尊渡假赌尊渡假赌
リリース: 2025-02-20 08:38:10
オリジナル
855 人が閲覧しました

Opcacheの理解

キーテイクアウト

  • opcacheは、PHP 5.5のビルトインキャッシングエンジンであり、メモリにスクリプトバイトコードを事前にコンパイルし、PHPアプリケーションでパフォーマンスを向上させます。古いPHPバージョンの拡張機能としてインストールでき、ウェブサイトの平均応答時間を最大14%短縮できます。 APCは新しいPHPバージョンをサポートせず、実行エラーにつながる可能性があるため、
  • opcacheはAPCキャッシュよりも優れたソリューションです。 OpcacheはPHP自体により密接に結合されているため、更新が頻繁になり、エラーが少なくなります。ただし、APCとは異なり、Opcacheはデータキャッシングエンジンとして機能しません。 OpCacheを1つのプロジェクトで有効にし、単一のサーバーで別のプロジェクトで無効にすることができます。これは、GlobalレベルでOpcacheを有効にし、INI_SET()関数を使用して特定のプロジェクトで無効にすることによって達成されます。 バージョン5.5のPHPには、キャッシュエンジンが組み込まれたOpcacheが付属しています。これには、メモリにスクリプトバイトコードを事前促進します。 APCまたはXcacheに精通している場合は、そのようなエンジンがどのように機能するかをすでに知っています。各PHPスクリプトは実行時にコンパイルされているため、実行時間の一部が使用され、人間の読み取り可能なコードをマシンが理解できるコードに変換するために使用されます。 Opcache、APC、Xcacheなどのバイトコードキャッシュエンジンは、特定のPHPファイルの最初の実行中に1回だけ行います。次に、プリコンパイルされたスクリプトがメモリに保存されているため、PHPアプリケーションのパフォーマンスが向上します。
  • Web上で、すべてのOpCacheのインストールと構成の手順をカバーする多くのチュートリアルを簡単に見つけることができます(5.5でデフォルトで有効になりますが、古いバージョンでは拡張機能としてインストールできます)。以下の記事を読んで、この特定のキャッシュエンジンを使用することのさまざまな実用的な側面に関する典型的な質問のいくつかに対する回答を見つけてください。
  • 1。 Opcacheはインストールする価値がありますか?どんな速度ブーストが期待できますか?
  • もちろん、
依存します。サーバーが着信トラフィックを処理し、応答時間が少ない場合、おそらくパフォーマンスに取り組む必要性を感じないでしょう。しかし、多くのトラフィックを備えたより大きなウェブサイトでは、各最適化ステップがカウントされる場合があります。 Opcacheの実装では、1秒あたりのリクエストを処理し、Bytecodeキャッシングエンジンがないよりも早く応答を返すことができます。 Opcacheはインストールと構成が非常に簡単であるため、すべてを設定するのにあまり時間を費やすことはありません。

OpCacheパフォーマンステストをお探しの場合は、このキャッシュエンジンの実装に関するAppDynamicsの記事を必ずお読みください。テストでは、Opcacheのインストールにより、Webサイトの平均応答時間が14%減少しました。 Webアプリケーションの異なるアクションの応答時間の短縮は、6%から74%まで変化しました。記事で説明したように、異なるコードパーツは、バイトコードキャッシングエンジンの実装から多かれ少なかれ利益を得る可能性があります。記事を詳細に読んで、最高のパフォーマンスブーストを得ることができる場所を確認することをお勧めします。

Opcacheのパフォーマンスに関する他のリソースを探している場合は、FideloPer.comとMassivesCale.comで例を確認してください。両方のテストでは、Opcacheのインストール後の応答時間が約50%減少したと報告しました。

2。私はすでにAPCキャッシュを使用しています。 Opcacheに移動する必要がありますか?

すべきだと思います。 OpcacheをAPCよりも優れたソリューションにすることができるいくつかの利点があります。

まず、APCキャッシュは最新のPHPバージョンでは動作しません。 PHP 5.5はまったくサポートしていません。このような構成がアプリケーション全体を破る実行エラーにつながる可能性があると報告されているため、PHP 5.4にインストールすることもお勧めしません。 PHPアクセラレータに関するWikipediaの記事またはこのスタックオーバーフロースレッドを確認して、詳細を取得してください。 ただし、

OpcacheはPHP 5.5にバンドルされているため、このPHPバージョンでは間違いなく動作します。ドキュメントに書かれているように、5.2から5.4の古いPHPバージョンでインストールすることもできます。一般に、Opcacheは他のバイトコードキャッシュエンジンよりもPHP自体に密接に結合しています。これにより、より頻繁に更新され、エラーが少なくなる可能性があります(詳細についてはこちらをご覧ください)。

APCからOpcacheに移行するときに覚えておくべき唯一の重要なことは、後者がデータキャッシングエンジンとして機能しないという事実です。既にAPCを実装している場合、データキャッシングサービスのインターフェイスとして機能するAPC_ADD()およびAPC_FETCH()関数を使用している可能性があります。 Opcacheはバイトコードキャッシングエンジンのみであるため、同様の機能を提供しません。 APCからOpcacheに切り替えることを計画している場合は、この制限を考慮することを忘れないでください。 APCユーザーランドの機能を維持したい場合は、APCUプロジェクトがあります(コメントでそれを指摘してくれたオスカーメリナに感謝します)。

3。 opcacheが実際に私のファイルをキャッシュしているかどうかを確認する方法は?

既にOpcacheをインストールして構成している場合、実際にどのPHPファイルがキャッシュされているかを制御することが重要になる場合があります。キャッシュエンジン全体がバックグラウンドで動作し、訪問者またはWeb開発者に透明です。そのステータスを確認するには、そのような情報を提供する2つの関数のいずれかを使用できます:opcache_get_configuration()およびopcache_get_status()。幸いなことに、すべてのopcache構成とステータスデータを取得し、フレンドリーな方法で表示する準備されたスクリップがいくつかあります。自分でコードを書く必要はありません。以下のツールの1つを選択するだけです。 - Opcacheコントロールパネル、
- rasmus lerdorf、
によるopcache-status - Pieter HordijkによるOpcachegui、
- Andrew CollingtonによるOpcache-gui。

私のプロジェクトでは、必要なすべての機能を備えたOpcache-Guiスクリプトを使用しています。キャッシュエンジンが適切に機能するかどうかを確認するには、Opcache-Guiページの[概要]タブの割合を確認してください。メモリの使用量とヒット率の値がゼロを超える場合、OpcacheがPHPコードをキャッシュし、キャッシュされたファイルが要求を処理するために使用されていることを意味します。キャッシュされている特定のPHPファイルのリストを表示するには、タブ「ファイル使用」に移動するだけです。ファイルリストを調べて、プロジェクト内のファイルがキャッシュされたことを確認してください。

Opcacheの理解

4。設定する必要があるフレームワーク固有の構成はありますか?

基本的に、Opcacheエンジンはコードライターとしてあなたに透明である必要があります。つまり、必要なコードをアプリケーション(使用しているPHPバージョンで動作する)に配置できることを意味し、Opcacheはそれを適切に処理する必要があります。ただし、OpCache構成が正しい方法で設定されている場合にのみ機能します。間違ったキャッシュエンジンの構成は、ウェブサイト全体を破ることができます。

まず、おそらく各典型的なプロジェクトでは、opcache.use_cwdオプションがtrueに設定されていることを確認する必要があります。この設定を有効にすると、Opcacheエンジンが完全なファイルパスを調べて、同じ名前のファイルを区別することができます。それをfalseに設定すると、同じベース名でファイル間の衝突が発生します。

注釈を使用するツールやフレームワークで重要な設定もあります。 Doctrine、Zend Framework 2、またはPHPユニットを使用する場合は、opcache.load_commentsとopcache.save_commentsの設定をtrueに設定することを忘れないでください。その結果、ファイルからのドキュメントのコメントは、Opcacheによって生成された事前コンパイルコードにも含まれます。この設定により、混乱なしに注釈を使用することができます。

プロジェクトが特定のフレームワークまたはWebアプリケーションに基づいている場合、OpCache構成に関するガイドラインについてドキュメントを確認することをお勧めします。たとえば、ここにはMoodleのサンプル構成があります。

5。アプリの構成をPHPファイルに保持します。キャッシュされないようにすることはできますか?

プロジェクトに他のプロジェクトよりも頻繁に変更されているファイルが含まれている場合、キャッシュからそれらを除外できます。 Webサイトの構成ディレクティブを含むPHPファイルを扱う場合、特に便利かもしれません。それらがキャッシュされないようにすると、そのようなファイルに入れられた各変更がアプリケーションにすぐに表示されることを確認できます。

Opcacheを使用すると、キャッシュエンジンで処理されないすべてのパスを含むブラックリストファイルを指定できます。 opcache.blacklist_filenameディレクティブを設定した後、指定したパスに適切なファイルリストを配置するだけです。ドキュメントページには、キャッシュから特定のファイルを除外する方法に関するいくつかの例が含まれています。

6。 Opcacheが有効になっている単一のサーバーで開発環境と生産環境の両方を実行するにはどうすればよいですか?

サーバーがいくつかのアプリを実行している場合、それらの一部でのみOpcacheを使用することをいとわない場合があります。開発およびテストサイトは、Bytecodeキャッシングを有効にすることが望ましくなく、善よりも多くの害を引き起こす可能性があるこのような環境の例です。

幸いなことに、あるプロジェクトでOpcacheを有効にし、別のプロジェクトではすべて単一のサーバーで無効にすることができます。そのためには、まず、PHP.iniファイルでOpCache.enableディレクティブをTrueに設定して、グローバルレベルでOpCacheを有効にする必要があります。次に、プロジェクトのいずれかでbytecodeキャッシュを使用したくない場合は、INI_SET()関数を使用して同じ指令をfalseに設定して無効にします。したがって、最初にグローバルにキャッシュを有効にする必要があり、次に「ローカル」の一部のプロジェクトで無効にすることができます。反対を行うことはできません - ini_set()を使用してキャッシュを有効にすることは許可されていません。

プロジェクトのトップファイルでfalseを設定できます。他の場所に保管しながらキャッシュを無効にします。

要約

この一連の一般的な質問と回答が、PHPアプリケーションでOpcacheを使用する方法に関する実用的な情報を提供することを願っています。主題に関する他の質問やコメントがある場合は、以下に投稿してください。 Google Plusから連絡することもできます。

opcache

についてのよくある質問

PHPのOpcacheの主な機能は何ですか?

​​

opcacheは、共有メモリにプリコンパイルされたスクリプトバイトコードを保存することによりPHPパフォーマンスを向上させる強力なPHP拡張です。これにより、各リクエストでPHPがスクリプトをロードして解析する必要性がなくなり、実行時間とメモリの使用が削減されます。トラフィックや複雑なアプリケーションが高いウェブサイトにとって特に有益です。これは、荷重時間を大幅に高速化し、全体的なパフォーマンスを向上させることができるためです。 PHPスクリプトの出力を保存するキャッシングメカニズムは、PHPスクリプトの事前にコンパイルされたバイトコードを保存します。これは、リクエストが作成されるたびにPHPコードを再コンパイルする必要がないことを意味します。これにより、多くの処理時間とリソースが節約されます。これにより、OpcacheはPHPパフォーマンスを改善するためのより効率的かつ効果的なソリューションになります。最大のパフォーマンスのためにOpcache構成を最適化するにはどうすればよいですか? ​​

OpCacheパフォーマンスを最適化するために調整できるいくつかの構成ディレクティブがあります。たとえば、opcache.memory_consumptionを増やして、事前コンパイルされたbytecodeを保存するために、より多くのメモリを割り当てることができます。また、opcache.revalidate_freqを調整して、opcacheがスクリプトの変更をチェックする頻度を制御することもできます。

opcacheはすべてのPHPバージョンと互換性がありますか?ただし、デフォルトではPHP 5.5の時点で含まれています。以前のバージョンでは、PECL拡張機能としてインストールする必要があります。

Opcacheを他のキャッシュメカニズムで使用できますか? Redis。 Opcacheは、事前縮小されたバイトコードをキャッシュすることでPHPのパフォーマンスを向上させますが、他のキャッシュメカニズムは、データベースクエリまたはPHPスクリプトの出力をキャッシュすることでパフォーマンスをさらに向上させることができます。 opcacheは、トラフィックや複雑なアプリケーションの高いウェブサイトにとって特に有益です。時間を読み込み、全体的なパフォーマンスを向上させます。ただし、パフォーマンスの増加が目立たない可能性があるため、トラフィックや単純なアプリケーションが低いウェブサイトでは効果的ではない場合があります。また、ファイルベースのセッションやファイルベースのユーザーデータストレージの問題を引き起こす可能性があるため、あらゆる種類のWebサイトやアプリケーションには適していません。

以上がOpcacheの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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