勉強したことのメモ

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

  関連記事

短縮URL(リダイレクトページ)

<? /* 管理画面とあわせて使う。 short_url直下にこのphpを ...

定数とグローバル宣言した配列

定数のメリットが分からず、ほとんど使ってこなかったけど 画像用のfunction ...

フォームデータを一気に取得

<? error_reporting(E_ALL & ~E_NOT ...

PHPファイルを解析する時に役立つ関数

初めて見るファイルに対して読み解くのに 役立つ関数が3つあったのでメモ。 get ...

PHPにて自動でファイルを呼び出す(auto_prepend_file)

設定ファイルとかをinclude('config.php')みたいに、 いちいち ...

PHP7が2015年11月にリリースされるらしい

PHP7で変わること ——言語仕様とエンジンの改善ポイント from Yoshi ...

MySQLiでDELETE文

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

MySQLiでFOUND_ROWS(全件数取得)

MySQLiでFOUND_ROWS(全件数取得)。 $sql = ' SELEC ...

no image
短縮URL作成(管理画面)

error_reporting(E_ALL & ~E_NOTICE); ...

MySQLiでUPDATE文

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