foreachループ内でforeachで回しているコレクションにアイテムを追加していたので永遠にループが終わらずにメモリが溢れるまでアイテムを追加し続けていた。
それだけならまだ気づいたと思うんだけど、今回はテスト用に下のようにbreakを入れて1回しか追加されないようにしたつもりが $breakという名前の未定義の変数を評価しているだけで、処理が止まっていなかったので無駄に悩んでしまった。死にたい。
foreach ($list as $item) { // $listはArrayObject $list.add(new Item()); $break; // breakではなく「$break」なので止まらない }