WEBで見れる管理画面でたくさんデータをダウンロードしたいって要件から作った話です。
そもそも、いくつまでファイルでかくなるとか要件になかったはずだし、改修しなくても数万件くらいは出来るんだからよくね??ちょっとだけ思った。
バッファしない作りだから、適当にlimit offsetすればいい感じに出来るはーず
対象読者 or 環境
PHP初心者、Linux系
最終的にどーなったか
download.php
<?php
$date = date("YmdHis");
$filename = "${date}.csv";
header('Content-Disposition: inline; filename=' . basename($filename));
header('Content-Type: application/csv');
$headers = [
"ID",
"NAME",
"TEXT",
];
ob_end_clean();
ob_start();
echo join(",", $headers)."\n";
flush();
ob_flush();
$id = "id";
$name = "name";
$text = "text";
for ($i = 0; $i < 10; $i++) {
$contents = [
$id,
$name,
$text,
];
echo join(",", $contents)."\n";
flush();
ob_flush();
sleep(1);
}
return;
参考
あとがき
今回使ってたフレームワークでは、関数終了時自動でsetcookie()呼ばれてしまっていて、header返しやがってうざかった。
それに時間かかった。それだけ