勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

PHPでCSVを出力する際にメモリを節約

   

MySQLよりデータを大量に取り出してCSV化し、ダウンロードさせるというPHPのプログラムを作成した。今まではデータ件数が少なかったので問題なかったが今回は数十万件のデータをCSV化するというものになりメモリが足りなくなった。一旦はmemory_limitを変更することで対応したが、できればプログラム側でもメモリを節約するように変更したい。以下に方法をメモ。

 

テスト条件

使用したテーブル構造は以下の通り。

ランダムなデータを400万件ほど突っ込んであるテーブルで今回はそこから1万件取得し、CSV化するというもの。

 

今までのCSV化方法

以下記事のまま作成。

https://taitan916.info/blog/?p=2078

メモリ使用量は約9MBとなった。

 

今回試した方法

メモリ使用量は約2MB。4.5倍ほど改善された。

 

参考サイト

http://codaholic.org/?p=1800

https://lab.flama.co.jp/archives/1139/

 - PHP

  関連記事

MySQLiでDELETE文

MySQLiでDELETE文 ■ソース $mysqli = new mysqli ...

PHPでファイルパスorフォルダパスの確認

PHPで画像とか触る際にフォルダのパス、ファイルのパスを 知りたいことがあったの ...

エラー管理まとめ2

これに続いてちょっとだけつまづいた点があったのでメモ。 ■ソース //ページTO ...

PHPのfor文とforeach文

ループ処理の際、forとforeachのどっちでもいけそうな場合、 特にどっちを ...

PHPで改行を含むデータをCSV化

PHPで改行を含むデータをCSV化した場合、そのCSVファイルをエクセル等で開く ...

PHPとSQLiteで簡易BBSの作成

PHPとSQLiteの練習で簡易掲示板を作ったのでメモ。   &nbs ...

PHPの文字化け対策

PHPファイルもDBも全部UTF-8で出来たらいいけど、 そうもいかない場合が多 ...

WordPressで任意のクエリをページに出力するプラグイン

先日、「WordPressで任意のクエリをページ内で出力する方法 」という記事で ...

Fatal error: [] operator not supported for stringsの対処

Fatal error: [] operator not supported f ...

PHPで多次元連想配列のキーを指定してソート

やりたかった事は、 ・多次元配列があってcodeというキーでソートしたい という ...