Есть симфони команда, которая проверять в БД наличие определенных записей и добавляет новые.
При добавление новых записей мы падаем по памяти в 128М. Нужно сделать что бы мы не падали.
public function execute(InputInterface $input, OutputInterface $output): int
{
$batchSize = 50;
$existingDeviceSerialNumbers = ['1', ..........'10000'];
$toSave = [];
for ($i = $startSerialNumber; $i <= $stopSerialNumber; $i++) {
if (in_array((string)$i, $existingDeviceSerialNumbers, true)) {
continue;
}
$entityDto = new Entity(........);
$entity = $this->repository->create($entityDto);
$toSave[] = $entity;
$output->writeln(sprintf('count %d', $i));
if ((count($toSave) % $batchSize) === 0) {
$this->unitOfWork->saveChanges($toSave);
foreach ($toSave as $item) {
$this->entityManager->detach($item);
}
$this->unitOfWork->clear();
$toSave = [];
}
}
if ($toSave !== []) {
$this->unitOfWork->saveChanges($toSave);
}
return Command::SUCCESS;
}
Почему-то утекает память....
Хотя используем detach и clear
И падаем по памяти, буду рад любому замечанию....