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 

Large file was 2.3MB and the small one was about 3.0KB.
I ran both functions against small files 100,000 times and ran it again on large file just once.

于 2012-08-12T07:24:21.137 回答
0

不管有什么区别,如果有的话,与首先发出 HTTP 请求来获取内容相比,它是 100% 可以忽略不计的file.txt。写下你的意思。如果您不需要变量,请不要使用变量。

于 2012-08-12T07:12:58.820 回答
0

我做了一个小测试,但我不确定在你的情况下会更快.. microtime 在我看来是一个很好的测试速度的工具..

<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

我建议您使用$file,因为您可以将变量用于多个操作。两者之间的时间可以忽略不计。

于 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 回答