1

PHPジェネレーターで1つの大きな配列を変換するためにあなたの助けを求めています. 以下は、やり直しが必要なコードです。サービス呼び出しから結果セットを取得し、すべてを配列に割り当てています。

foreach ($objects->result as $pointStdObject) {
  $pointStdObjects[] = $pointStdObject;
}

このコードは、オフセットが 1000 のレコードを照会する while ループ内にあります。問題は、$pointStdObjects[] が非常に大きくなる傾向があり、PHP のメモリ不足例外が発生することです。

後で、この同じ配列を次のように使用する必要があります。

foreach ($pointStdObjects as $pointStdObject) {
  $point = $this->pointFactory->createPointFromStdObject($pointStdObject);
  if (!$point) {
    continue;
  }
  $points[] = $point;
}
return $points;

PHPジェネレーターを活用できるか、ここで譲るかどうか提案してください

4

1 に答える 1