$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行(而不是在一行中写入)或类似的东西。这会是一个更有效的过程吗?你建议我改进这个过程是什么意思?感谢
答案 0 :(得分:2)
直接写入输出:
header("Content-Type: application/csv etc ....");
while ($row = mysql_fetch_assoc($sql_result)) {
fputcsv(STDOUT, $row);
}