在 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');
为我的菜单等使用服务器端包含(),但想将其用于某些事情(例如在其他域上)
谢谢
在 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');
为我的菜单等使用服务器端包含(),但想将其用于某些事情(例如在其他域上)
谢谢
如果您在每个页面上大量使用此方法来处理非常大的文件,那么您将通过额外的变量浪费内存空间。所以更好的方法是:
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.
不管有什么区别,如果有的话,与首先发出 HTTP 请求来获取内容相比,它是 100% 可以忽略不计的file.txt
。写下你的意思。如果您不需要变量,请不要使用变量。
我做了一个小测试,但我不确定在你的情况下会更快.. 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>
我建议您使用$file
,因为您可以将变量用于多个操作。两者之间的时间可以忽略不计。
答案很简单:
第 1 行 -echo file_get_contents('http://example.com/file.txt');
将比第 2 行更快,因为没有变量初始化并且在内存中不会为此收集存储,而且在 PHP(这是弱类型)中初始化变量的成本很高。但是如果你打算在其他地方使用 $file,而不是在这里回显它,你只需要初始化这个变量。