0

PHPでどちらが速いですか:

echo file_get_contents('http://example.com/file.txt');

また

$file = file_get_contents('http://example.com/file.txt'); echo $file;

メニューなどにサーバー側インクルード ( require('/var/www/menu.php');) を使用していますが、これを特定のもの (他のドメインなど) に使用したい

ありがとう

4

5 に答える 5

3

非常に大きなファイルのすべてのページでこの方法を大量に使用すると、余分な変数によってメモリ領域が浪費されます。したがって、より良いアプローチは次のようになります。

echo file_get_contents('http://example.com/file.txt');

file_get_contents() と fread() のどちらの関数がより高速であるかを尋ねる方がよいでしょう。答えは、ファイルが 1MB または 2MB を超える場合は、パフォーマンスが向上する file_get_contents() を使用することでした。
ここでベンチマークを見ることができます:

File Read Type          Average Execution Time            Type of File 
file_get_contents()        0.3730ms                          Small 
fread()                    0.1108ms                          Small 
file_get_contents()        0.012ms                           Large 
fread()                    0.019ms                           Large 

大きいファイルは 2.3MB、小さいファイルは約 3.0KB でした。
小さなファイルに対して両方の関数を 100,000 回実行し、大きなファイルに対して 1 回だけ実行しました。

于 2012-08-12T07:24:21.137 に答える
0

違いが何であれ、もしあれば、file.txtそもそもコンテンツをフェッチするためのHTTPリクエストを作成する場合と比較して、100%無視できます。あなたが何を意味するかを書いてください。変数が必要ない場合は、使用しないでください。

于 2012-08-12T07:12:58.820 に答える
0

私は小さなテストを行いましたが、あなたのケースでどちらがより速くなるかはわかりません。マイクロタイムは私の意見ではスピードをテストするための素晴らしいツールです。

<html>
<body>
<?php
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
echo "<textarea>".file_get_contents('http://in.gr')."</textarea>";
$time_end = microtime_float();
$time = $time_end - $time_start;
echo  $time;


$time_start = microtime_float();
$file = file_get_contents('http://in.gr'); echo "<textarea>".$file."</textarea>";

$time_end = microtime_float();
$time = $time_end - $time_start;
echo  $time;
?>
</body>
</html>
于 2012-08-12T07:15:07.980 に答える
0

$fileuは複数の操作に変数を使用できるため、使用することをお勧めします。2つの間の時間はごくわずかです。

于 2012-08-12T07:16:21.410 に答える
0

答えは質問のように簡単です:

1行目-echo file_get_contents('http://example.com/file.txt');変数の初期化がなく、メモリ内にそのためのストレージが収集されないため、2行目よりも高速になります。さらに、PHP(これは弱い型付けです)では、変数の初期化にはコストがかかります。しかし、ここでエコーするのではなく、別の場所で $file を使用する場合は、この変数を初期化する必要があります。

于 2012-08-12T07:22:14.793 に答える