CakePHP でバッチ処理を組むときの注意

CakePHPバッチ処理を組む際、Model::cacheQueries が true の状態で、Model::find() を繰り返すとあっという間にメモリ不足に陥ってしまった。バッチ処理中に同じクエリを利用することはないため、クエリのキャッシュを無効化した。

例1: バッチ処理のために一時的にキャッシュを無効化する。

<?php
$this->Foo->cacheQueries = false; // 無効化

例2: あらかじめクラスの定義で無効化しておく。

<?php
// CakePHP 2.0
class Foo extends AppModel {
  public $name = 'Foo';
  public $cacheQueries = false; // 無効化
}