私は1秒ごとに収集されるセンサーデータのDBを持っています。クライアントは12時間のチャンクをCSV形式でダウンロードできるようにしたいと考えています。これはすべて完了です。非常に大きなCSVファイルを書くPHPのDB出力から
出力は悲しいほどストレートなデータではなく、CSVを作成する前に処理する必要があります(部品はDBにJSONとして保存されています)ので、テーブルをダンプすることはできません。
負荷を軽減するために、ファイルを初めてダウンロードしたときにディスクにキャッシュして、そのファイルをダウンロードするだけのリクエストがあると考えました。
file_put_contents、FILE_APPENDを使って書いてみるのはやめて、すべての行をエコーするだけですが、スクリプトを512Mに渡してもメモリが不足していても書きます。
ので、これはこれは、それも、私はそれがメモリにすべてを記憶している、すべての行でますfile_put_contentsを呼び出しています思ったように思えるない
while($stmt->fetch()){
//processing code
$content = //CSV formatting
file_put_contents($pathToFile, $content, FILE_APPEND);
}
ん
while($stmt->fetch()){
//processing code
$content = //CSV formatting
echo $content;
}
動作します。
提案がありますか?
代わりにfwrite()を使って1行ずつ書き込んだことがありますか? – Crashspeeder