5.4の記事ばっかり書いてるけどLTSの5.5で書きたいのが本音。 前提 Laravel 5.4 PHP7.1 DBはUTF-8(MySQLならutf8mb4 + mysqlnd とする) 解決したいこと Databaseから1000万行あるデータとかをCSVとして出力したい (普通に全件出力するとメモリオーバーする) CSVはWindows Excel で文字化けせずに開きたい レスポンスするファイル名が日本語だった場合の問題は今回は無視 解決方法 SQLのカーソルを開き、適当なレコード数毎に出力 Symfony のStreamedResponseを使う 全部取ってきて~ってやるとPHPのメモリにどかっと結果セットが乗ってしまうので、RDBのカーソル開いて1行ごとに出力を行う。 レスポンスの作成 StreamedResponseのコールバック関数を定義する。 Laravelって書いたけど