4

で引数として相対パスを使用すると、パフォーマンス上の利点はありますfile_get_contents()か?

file_get_contents("../../mypage.php");

v/s

file_get_contents("http://.../mypage.php");

file_get_contents()社内での取り扱いは?

4

2 に答える 2

6

「リモート」ファイルがローカル サーバー上にある場合でも、ローカル ファイルとリモート ファイルを使用すると、明らかに顕著なパフォーマンスの違いが生じる可能性があります。

などのローカル/相対ファイルfile_get_contents("../../mypage.php");を使用すると、ネットワーク トラフィックを使用する必要なく、サーバーに直接読み込まれます。file_get_contents("http://localhost/mypage.php");やなどのリモート ロードの場合file_get_contents("http://example.org/mypage.php");、リモート ホストへの接続が確立されます (「ローカル」であっても)。さらに、ローカル読み取りでは、関数はファイルの内容を正確に返します。リモート読み取りは、戻る前にリモートホストがコンテンツをレンダリングすることになります (PHP の場合)。

デフォルトでは、ローカル/相対ファイルのパフォーマンスはリモート ファイルよりも高速です。接続速度が遅いネットワークからリモート ファイルをロードしようとすると、最大の顕著なパフォーマンス上の利点が見られます。

の内部実装は、 とfor のループを書き、 で閉じるのとfile_get_contents()似ています。次に、ファイルで見つかったすべてのコンテンツの文字列を返します。基本的に、より使いやすい「ファイルから読み取る」インターフェイスを提供します。fopen()fread()fclose()

メソッドの詳細については、php.net/manual/en/function.file-get-contents.phpでマニュアルを参照してください。

于 2012-07-16T12:53:49.843 に答える
5

パフォーマンス上の利点がある場合は、php エンジンに依存しません。パスは、クエリを実行する Web サーバーによって処理されます。

ただし、この場合、ローカル fs からファイルを取得するため、最初のケースではパフォーマンス上の利点があり、2 番目のケースでは、応答を取得するためにネットワーク スタック全体 (http/tcp/ip) を通過する必要があります。 . また、最初のケースでは php ソースが返され、2 番目のケースでは、php エンジンによって処理された Web ページが返されます。

より明確な例:

file_get_contents('../../somefile.ext');

file_get_contents('/home/user/somefile.ext');

同じように速くなります。

于 2012-07-16T12:51:14.753 に答える