输出文件时“echo”块的好处是什么?

时间:2011-01-04 05:14:06

标签: php performance file

以下内容的好处和区别是什么:

声明1:

header("Content-type: image/jpeg");
header('Expires: ' . date('r',time() + 864000));
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
$splitString = str_split($contents, 1024);
foreach($splitString as $chunk)
echo $chunk;

声明2:

header("Content-type: image/jpeg");
header('Expires: ' . date('r',time() + 864000));
header("Pragma: public");
header("Cache-Control: public");
header("Content-Length: " . strlen($contents));
echo $contents;

4 个答案:

答案 0 :(得分:3)

由于TCP / IP数据包的缓冲方式,使用echo向客户端发送大字符串可能会导致严重的性能损失。有时它可以在脚本的处理时间内添加一整秒。这甚至在使用输出缓冲时发生。

如果需要回显大字符串,请先将其分解为较小的块,然后回显每个块。 因此,使用方法1拆分字符串OR使用substr拆分它并发送到客户端对于大型文件执行速度比方法2快。

答案 1 :(得分:0)

声明1增加了不必要的开销和混淆。

答案 2 :(得分:0)

在第一个语句中内容分成1024个字节的块,一个块有1024个字节的内容,在第二个语句中确定整个内容的长度蚂蚁然后回显这个但是在第一个分块中然后在每一个的帮助下回显一个人。

答案 3 :(得分:0)

如果$contents非常大,你可以用块来回显它,以便立即停止整个事件。