7

この質問は、PHPエンジンの内部メカニズムと関係があります。ファイルインクルードプロセスを理解するためにお願いしています。

たとえば、すべてのphpスクリプトに含まれる20,000行のインクルードファイル(「functions_library.php」など)があるとします。

PHPは、phpスクリプトの1つがそのファイルをロードするたびに、そのインクルードファイルが構文的に正しいかどうかをチェック/検証しますか?このプロセスは、各ページが何度も何度も読み込まれるときに発生しますか?

または...

PHPはファイルの最終変更日に注意を払っていますか?前回のチェック以降に変更がなかったことが判明した場合、チェックを無視するだけですか?

4

3 に答える 3

4

デフォルトのインストールでは、ファイルは毎回解析されます。ただし、PHPの実稼働インストールでは、APCその他の多くのバイトコードキャッシュを使用することをお勧めします。バイトコードキャッシュを使用すると、スクリプトが最初に解析され、解釈されたコードがメモリに保存されます。

構成が異なると、ファイルの変更がチェックされる頻度が変わる可能性があります。一部の構成では、非常に高いパフォーマンスを得るには、Webサーバーを手動でフラッシュまたは再起動する必要がある場合があります。

于 2012-07-26T14:14:20.803 に答える
1

そのファイルを含めると、PHPは毎回それを解釈する必要があります。

于 2012-07-26T14:05:44.420 に答える
0

PHPは、を呼び出すたびにファイルを再解釈しますinclude()

これは、変数を使用して視覚的にテストできます。あなたがこのようなものを持っているなら:

otherScript.php:
   <?php echo $foo; ?>

script.php:
    <?php
    $foo = 1;
    include("otherScript.php");
    $foo = 2;
    include("otherScript.php");
    ?>

出力は次のようになります。

12

これは悪い例ですが、PHPが毎回ファイルの内容を含める必要があることを示しているはずです。PHPインタープリターは、参照ごとにインクルードされたファイルのコピーをメモリに保持しないと述べるのはかなり良い推測です。アプリケーションごとに何百ものインクルードが存在する可能性があります。

ただし、この特定の理想に対処するためにinclude_once()、名前が示すように、ファイルを1回だけインクルードし、それ以上インクルードされないようにする方法を提供します。

于 2012-07-26T14:12:55.087 に答える