1
$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循环中回显行(而不是写在一行中)或类似的东西。这会是更有效的过程吗?你会建议我如何改进这个过程?谢谢

4

1 回答 1

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

于 2013-02-27T16:02:13.150 回答