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;

この方法は正常に機能しますが、一部のファイルは非常に大きいため、プロセスが非常に遅くなります...最初にファイルを作成してからデータを書き込み、次にデータを読み取って出力するプロセスを回避できればと考えていました。 ....つまり、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 に答える