今やはりのプログラムはMVCモデルのフレームワークですね。
PHPには、Zend Framework、Symfonyとありますが、今回はCakePHPの話。
CakePHPでWebサイトを作成してもう少しで一年。フレームワークのよい所、わるい所が見えてきました。
最近の話・・・
200万件レコードをCSVデータとして出力する処理を作成していました。
テキストデータで300MBもないデータですが、PHPに割り当てた1GBのメモリがイッパイになってしまうこと数回・・・・
なぜ?なぜ?
同じデータをphpMyAdminのCSVエクスポート機能から出力すると、最後まで出力できる。
両方のコードを調査してみた。
phpMyAdminのコードは、データベースを開いた後で、オブジェクトに取得したデータを1行ずつ出力していきます。
対して、
CakePHPのコードは、データベースから取得したデータを何やら配列らしいものにセットして・・・
って、ここがどうもメモリを相当に圧迫しているらしい。速度的にもボトルネックになっていそう。
まあ、こんな大量なデータベースデータを標準機能で取得することは想定されていないだろうな?