PHPでストリーミング ダウンロードする方法

2017年08月13日
投稿者:岩佐 孝浩
カテゴリ:PHP タグ:
2880px-PHP-logo.svg

PHPでストリーミング ダウンロードする方法

鈴木商店の岩佐です。
色々なサイトで回避策が書かれていますが、備忘録として残しておきます。
teratailのQAを参考にしました。

1. ストリーミング方法

CSVに出力するデータをメモリに溜めず、php://outputで取得したストリームに、データをストリーミングします。
こうすることで、ほとんどメモリを使用せず、大量レコードをCSVダウンロードできます。

2. サンプルコード(汎用クラス)

注1. PHP 7.1で開発しました。
注2. ダウンロードしたCSVはWindowsで使用するため、文字コードはShift-JIS、改行コードはCR+LFにしています。

App\Lib\Stream\DownloadStream.php

App\Lib\Stream\Filter\CrlfFilter.php

3. 使い方

併せて、「CakePHP3でメモリ使用量を劇的に下げる1行のコード」もどうぞ。
以上、お役に立てれば幸いです。


“PHPでストリーミング ダウンロードする方法” への 2 件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です