PHPでファイルのダウンロード
何が正解かはわからんがとりあえずコードを晒す
ob_start();

$stream = fopen('php://output', 'W');

$array = ['のびた', 'どらえもん', 'ジャイアン', '骨川'];

for($i = 0; $i < 100; $i++){

	fputcsv($stream, $array);

}

header('content-type: text/csv; charset=UTF-8');

header('content-disposition: attachment; filename="test.csv"');

header('content-length: '.ob_get_length());

ob_flush();
ファイルを作りたくない
保存しておく必要がないファイルに対してファイルを消すという行動をするのはいかがなものか。そうだ。ファイル自体を作らなければいいんだ。
標準出力に一旦吐いてob_get_lengthでcontent-lengthを取得してob_flushで書き出すという捻り技ともいえる。メモリ的にどうなのかは全く検証していない。
あとググってたまに見る『content-type: application/octet-stream;』はなんなんだ。CSVのメディアタイプがあるのできっちり落とし込むべきだ。