0

私はこれほど多くのことを考えたことはありませんが、php include(またはrequire) を実行すると正確に何が起こるのか興味があります。

私はいつも、PHPページがロードされると、実際にファイルをインクルードする(そしてディスクにアクセスする)のではなく、PHPコンパイル済みコード(つまりAPC)のメモリキャッシュをチェックすると想定していました。

しかし、それから私は考えていました.PHPはファイルがいつ変更されたのか(そして再コンパイルされたのか)をどのように知るのでしょうか? ロード時にディスクをチェックする必要はありませんか? これが ( APC、ディスク ヒット、および requires/includes によると) 絶対パスの現在のディレクトリを確認する必要があるため、相対ファイル名を含めることが絶対よりも悪い理由です (同じ名前のファイルが 2 つある場合)。そのため、一部の非常に大きなフレームワークでは、ファイルが変更されたかどうかを確認するために多くのディスク ヒット チェックが行われるように思えます。

それとも、APC がオンになっている場合、起動時に手動でキャッシュをクリアする必要があるということですか?

4

1 に答える 1

1

のドキュメントをチェックしてくださいapc.stat:

http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat

これはデフォルトで on に設定されており、APC はリクエストごとにスクリプトを stat (チェック) して、スクリプトが変更されているかどうかを判断します。変更されている場合は、新しいバージョンを再コンパイルしてキャッシュします。この設定がオフの場合、APC はチェックしません。通常、APC にファイルの再チェックを強制するには、Web サーバーを再起動するか、キャッシュを手動でクリアする必要があります。

于 2013-10-31T18:37:48.487 に答える