PHP性能:echo file_get_contents('...')V $ file = file_get_contents('...'); echo $ file

时间:2012-08-12 07:08:29

标签: php performance file-get-contents

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');)用于我的菜单等,但是想将它用于某些事情(例如在其他域上)

由于

5 个答案:

答案 0 :(得分: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 :(得分:0)

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

答案 2 :(得分:0)

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

<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>

答案 3 :(得分:0)

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

答案 4 :(得分:0)

问题的答案很简单:

第一行 - echo file_get_contents('http://example.com/file.txt');将比第二行快,因为没有变量初始化,并且在内存中不会为此收集存储,而且在PHP中(这是弱类型)初始化变量成本昂贵。 但是如果U打算在其他地方使用$文件,而不是仅仅在这里回显它,那么U只需要初始化这个变量。