2

Linux + Apache+PHPがすべてのデフォルト設定でインストールされていると仮定します。大規模なサードパーティのPHPライブラリを使用するPHPWebサイトがあります。たとえば、1MbのPHPソースがあります。このライブラリが使用されることはめったにありません。たとえば、POSTリクエストの場合のみです。このライブラリの使用法を別のPHPファイルに移動できないのには理由があります。したがって、HTTPリクエストごとにこのライブラリを含める必要がありますが、使用することはめったにありません。その場合、PHPの解析に費やす時間を心配する必要がありますか?説明させてください。私はこれを行うことができます:

<?php
require_once('heavy_library.php');
// do regular stuff
if(we need heavy library)
{
    heavy_library_function();
}
?>

この場合、heavy_library.phpがHTTPリクエストごとに解析されるため、このソリューションは悪いと思います。ifステートメントに移動できます。

<?php
// do regular stuff
if(we need heavy library)
{
    require_once('heavy_library.php');
    heavy_library_function();
}
?>

私が理解しているように、ライブラリが必要な場合にのみ解析されます。

さて、質問に戻りましょう。ApacheとPHPのデフォルト設定。この問題について心配する必要がありますか?require_onceを実際に使用されている場所に移動する必要がありますか、それとも通常どおりにそのままにしておくと、Apache / PHPは、各HTTPリクエストの解析を防ぐ何らかのキャッシュを実行しますか?

4

2 に答える 2

3

いいえ、Apacheはキャッシュを行いません。必要なときにだけ使用されるように、require_once内部を保持する必要があります。if

PHPのキャッシュが必要な場合は、eacceleratorのようなものを見てください。

于 2012-12-29T18:09:25.603 に答える
1

PHPにrequire()何かを伝えると、何があってもそれが実行されます。そのファイルを毎回最初から解析することを防ぐ唯一のことは、APCなどのオペコードキャッシュを使用することです。

この場合、条件付きでファイルをロードすることをお勧めします。これらの条件を設定することで生活がより複雑になることを心配している場合は、小さなベンチマークを実行してください。

自動読み込みを使用して、ファイルを「オンデマンド」で自動的に読み込むこともできます。見るspl_autoload

于 2012-12-29T18:11:57.687 に答える