CodeIgniterを使用していて、データベースからデータを取得する際、
以下のようにデータを取得すると思う。
1 2 3 |
$this->db->select('column1, column2'); $this->db->from('table1'); $this->db->get()->result_array(); |
この方法でもOKだが、データベースから取得したデータを、
すべてメモリに展開するため、大量のデータを操作する場合は、
メモリ不足となってしまう。
そこで、以下のような方法でデータを取得するようにする。
(ただし、version 3以降)
1 2 3 4 5 6 7 8 |
$this->db->select('column1, column2'); $this->db->from('table1'); $query = $this->db->get(); while ($row = $query->unbuffered_row()) { $row['column1']; ... } |
while分の中で、必要な値だけ取り出し、
ファイル書き出しや、echo等を都度行うようにすれば、
大量のデータをすべてメモリに展開しなくても、
なんとかやりくりできる。
コメント