3

私の理解では、PHPがinclude(またはrequire、またはそれらの_onceバージョン)に遭遇すると、ファイルシステムでファイルを検索し、コードがinclude呼び出しの場所にある場合と同じように解析します(returnファイルで呼び出された場合を除く) )。

そのため、ビジー状態のサーバーでは、多くの人がインクルード ファイル (たとえば、データベースに接続するファイルやグローバル関数を定義するファイル) に繰り返しアクセスすることは容易に想像できます。これはパフォーマンスに顕著な影響を与える可能性がありますか?

ファイルの内容を関連する場所にダンプすることにより、インクルードを「コンパイル」することは有利でしょうか?

4

1 に答える 1

1

include()、require() などについての私の理解では、C プリプロセッサの #include ディレクティブとよく似た働きをし、基本的にすべてのコードを現在のファイルのその位置にインラインであるかのように実行します。

上記のコメントのいくつかが述べているように、これらのファイルが頻繁に使用されている場合 (たとえば、 include() を介して常に呼び出されている場合)、RAM または少なくともディスク キャッシュに存在する可能性があります。

いずれにせよ、PHP ファイルが本質的に JIT コンパイルされてキャッシュされることには何の価値もないので、どちらの方法でもパフォーマンスの低下に気付くべきではありません。(詳細情報はこちら)。

また、補足として、include_once() および require_once()、include() および require() と比較してかなりのオーバーヘッドがあるため、速度が重要な要素である場合は、これらの呼び出しの使用を避けるようにしてください。

于 2012-07-09T18:12:09.947 に答える