勉強したことのメモ

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

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

   

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

 

テスト条件

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

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

 

今までのCSV化方法

以下記事のまま作成。

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

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

 

今回試した方法

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

 

参考サイト

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

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

 - PHP

  関連記事

images
PHPで配列のキーの最大値を取得する方法

配列のキーに整数値が入っていて、その中から最大値を取得したいケースがあった。調べ ...

images
PHPで携帯(スマホ含)とPCの判別

PHPにて携帯(スマホ含む)とPCで処理を振り分けたかったのでメモ。 <? ...

images
PHPでファイルをダウンロードさせる

集計ページみたいなんがあった。その集計ページを CSV化したいと言われた。 ■ソ ...

images
PHPで文字のあいまい検索(文字のゆれ)

googleとかで検索する際に、ちょっと間違えて 入力してしまっても「もしかして ...

images
PHPで%sとか%dとか

PHPで探し物していて%sとか%dとかいった記述があり 何これとなったのでメモ。 ...

images
PHPで配列を値で検索、破棄

PHPの配列で特定の値が入っていれば それを破棄したいということがあった。 ・u ...

url
CodeIgniterでCronを実行する方法

CodeIgniterで特定の処理をCronで自動で実行したかった。以下に設定方 ...

msyql-image
MySQLのREGEXPで半角記号を検索したい場合

MySQLのREGEXPで半角記号を検索したい場合 \\を付けてエスケープしない ...

images
HTTP_Request

社内で、PHP⇒社内システムのページにPOSTで データ飛ばして色々したい場合に ...

msyql-image
ランダム表示のページング

MySQLからデータを持ってくる際に、 ランダムな表示を行ってほしいと言われた。 ...