2017-07-07 14 views
0

いくつかの調査をした後、私はどのようにPHP include()ファイルがキャッシュされているかについての決定的な答えを見つけるのに苦労しています。ローカルPHP include()ファイルはキャッシュされていますか?

私が見つけた最も近いのはhereですが、それは私には分かりません。

私はいくつかのメソッドを使用していますが、異なるファイルから別のメソッドを使用しています。ファイルの先頭にinclude()を配置しないようにしたいのですが、パフォーマンスにどのように影響するかわかりません。

何か助けていただければ幸いです。

答えて

1

PHPは翻訳された言語です。デフォルトのPHPランタイムは、PHPソースコードをPHPバイトコードと呼ばれる中間表現にコンパイルして実行します。バイトコードキャッシュは、このコンパイルされたPHPソースコードの表現を共有メモリに格納します。これにより、要求ごとにソースコードをロードしてコンパイルする必要がなくなり、パフォーマンスが大幅に向上します(1秒あたり最大70%要求が増えます)。

基本的な考え方は、PHPスクリプトを実行する際には、2つのステップである:

  • まず:これらオペコード:PHPコード、プレーンテキストで記述されたが、オペコードその後
  • にコンパイルされます実行される。 PHPスクリプトが1つしかない場合、変更されていない限り、オペコードは常に同じです。したがって、スクリプトを実行するたびにコンパイルフェーズを実行することは、CPU時間の無駄です。

冗長コンパイルを防止するために、使用できるいくつかのオペコードキャッシュメカニズムがあります。

PHPスクリプトがopcodeにコンパイルされると、それらはRAMに保存され、次回スクリプトが実行されるときにメモリから直接使用されます。コンパイルが何度も繰り返されるのを防ぎます。

応答のためのより多くの

+0

感謝を読みます。これは 'include()'に特に関係します。同じファイルを複数のメソッドに 'include()'しても、 'include()'を一度しか実行せず、その後コンパイルされたコードを引き出すのでしょうか? –

+0

バイトコードはメモリにキャッシュされますが、ファイル名のインデックスが付きます。 PHPにインクルードするコードを伝えるのに 'include'が必要です。そのファイルのバイトコードがopcodeキャッシュにあるかどうか、またはディスクからファイルを取得する必要があるかどうか調べます –

+0

あなたが書いているならOOコードを使用しているので、PHPはオートローダーを提供しています –

関連する問題