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');
)用于我的菜单等,但是想将它用于某些事情(例如在其他域上)
由于
答案 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只需要初始化这个变量。