为什么刷新后需要readfile

时间:2013-11-28 08:27:51

标签: php buffer readfile flush

所以我正在使用我在互联网上找到的解决方案发送文件,它实际上正在工作! 但我真的不明白为什么:(

在我的解决方案中,我正在生成CSV(测试;测试;测试;测试;测试)。

所以我告诉我的标题它是一个csv文件,它也应该是一个附件:

<?php
$nom = time().'.csv';
header('Content-type: text/csv');
header('Content-disposition: attachment;filename='.$nom);
?>

我理解这一点,这很简单,但是当涉及到:

flush();
readfile($nom);

我明白了flush();正在向客户端传递缓冲区吗? 但为什么是readfile();必要吗? 我的意思是,如果发送内容,为什么我会再次阅读该文件?

1 个答案:

答案 0 :(得分:1)

readfile($nom);实际上正在读取您的文件并回显它,因此客户端可以接收数据。没有它,csv输出将为空。

flush()只是确保在输出写入开始之前清空输出缓冲区。我认为此时甚至都不需要。它只是确保你用readfile写入的输出缓冲区在执行此操作时为空。