读取大文件并强制下载

时间:2013-02-27 15:58:56

标签: php csv

$name = 'mybigfile.csv';
    $fp = fopen(...);
    while($row = mysql_fetch_assoc($sql_result)) {
       fputcsv($fp, $row);
    }
    fclose($fp);



// send the correct headers
header("Content-Type: application/csv etc ....");
header("Content-Length: " . filesize($name));

// dump the file and stop the script
readfile($name);
exit;

这个方法工作正常,但是有些文件非常大,这使得进程非常慢...我在想 - 也许我可以先避免创建文件然后再写入数据,然后再读取数据并输出...... .ie如果我在while循环之前发送标题并在while循环中发送echo行(而不是在一行中写入)或类似的东西。这会是一个更有效的过程吗?你建议我改进这个过程是什么意思?感谢

1 个答案:

答案 0 :(得分:2)

直接写入输出:

header("Content-Type: application/csv etc ....");

while ($row = mysql_fetch_assoc($sql_result)) {
    fputcsv(STDOUT, $row);
}

请参阅此处以供参考:http://www.php.net/manual/en/wrappers.php.php