2016-06-17 8 views
1

PHPインクルードファイルはいつ解析されますか?起動時または実行中?phpインクルードファイルはいつ解析されますか?

私のWebフォームは、単一のPHPスクリプトを呼び出します。 URLで渡される引数に応じて、スイッチ/ケースの条件によってスクリプトが何をするかが決まります。スイッチ内の各「ケース」には独自のインクルードファイルがあります。

最初の読み込み時にインクルードファイルが解析された場合、PHPスクリプトは処理時間が長くなり、Webフォームから呼び出された個別のPHPファイルがあると思うようになりますニーズ。

必要なときにインクルードファイルが解析された場合(つまり、コードの一部が特定のcase文に達したときにインクルードを実行すると)、メモリ上でコードが相当に保守的であることがわかります。

だから私の質問... PHPのファイルが解析されるのはいつですか?初期ロード時または実行中?

は(...注意私はここに答えを見つけることができなかった、と私はhttp://php.net/manual/en/function.include.phpを読んだことがある)

+0

私はこれについて早急に考えていると思います。時期尚早の最適化は悪の根源です。 – dieend

+4

テストしましたか?構文エラーのあるファイルを作成し、 'if ... include'の条件の中に別のファイルに含めます。条件が真であるときに1回、偽であるときに1回実行します。結論する。 – Pred

答えて

3

ファイルを実行で場合とinclude文が到達したを含まれています。非常に簡潔その手段は、以下のファイルが含まれることになるだろうことはありません何を要約する:

if (false) { 
    include 'foo.php'; 
} 
+0

この簡単な答えはボリュームを表しています。 –

0

ファイルがincludeの文に含まれている・実行時に解析されます。あなたのPHPコードがincludeステートメントにヒットすると、そこにあるファイルを見るためにファイルの解析が始まります。ザ・は、(または必要)

w3schoolsから文は が 文を含める使用するファイルに指定されたファイルをコピー、それを内に存在することを、すべてのテキスト/コード/マークアップを取ります。

同様のトピックと他の質問があります:

In PHP, how does include() exactly work?

1

あなたが含まれてあまりにも多くのメモリ使用状況を懸念しているので、私は上記もう少し詳細が終わっ有用であろうと感じとはあなたの質問への直接的な答え。

まず、PHPファイルがロードされるとすぐに解析されます。ファイルに構文エラーが含まれていると、すぐにそのことが伝えられます。それはコードのその行になるまで待つことはありません。ただし、後続のファイルは、includeステートメントを含む特定のコード行が実行された場合にのみ含まれます。

メモリの使用について懸念していますが、多くのインクルードファイルがあることは、大きなメモリの問題でもなく、大きなパフォーマンスの問題でもありません。実際、あらゆるサイズの最新のPHPアプリケーションは、すべてのページの読み込みに数百のPHPファイルを読み込むフレームワークライブラリを使用します。メモリとパフォーマンスの問題は、あまりにも多くのコードを読み込むのではなく、コード内のバグによって引き起こされる可能性が非常に高いです。

メモリとパフォーマンスが懸念される場合は、PHPのOpCache機能の使用を検討する必要があります。この機能を有効にすると、PHPは、システム内に含まれているすべてのファイルのコンパイル済み状態のメモリにキャッシュを保存します。したがって、ページを再び実行すると、includeステートメントが発生したときに、実際に何かをロードまたは解析する必要はありません。単にキャッシュから取り出すだけです。

OpCacheを使用すると、膨大な数のファイルを含めてコードを書くことができ、パフォーマンス上のペナルティはまったくありません。

最新のPHPバージョンでOpCacheがデフォルトで有効になっており、開発者には完全に透過的です。そこにあることを知る必要はありません。それがオンとオフの間に表示される唯一の違いは、あなたのサイトがより速く走っていることです。

まず、PHPのバージョンが最新バージョン(v5.5以上)であることを確認してください。次に、PHP.iniファイルでOpCacheが有効になっていることを確認します。その後、座って、これらの種類のことについて心配するのをやめてください。

関連する問題