Вопрос памяти выполнения запросов доктрины

Я выполняю запрос доктрины в цикле, привязываю параметры и выполняю несколько раз. Запрос выполняется нормально, проблема в том, что использование памяти увеличивается примерно на 3 МБ на цикл. Это не похоже на сборку мусора, и в конечном итоге серверу не хватает памяти.

foreach () { .....
foreach () { .....
$conn = $this->getEntityManager()->getConnection();

if ($this->sql == null) {
$this->sql = $conn->prepare(
"INSERT INTO table (l_id, a_id) VALUES (:lId, :aId);");
}
//Memory usage 200
foreach($lo as $l) {
$this->sql->bindParam('lId', $l->getId());
$this->sql->bindParam('aId', $aId);
$this->sql->execute();
}
//Memory usage ++3mb
}
}

Весь этот сценарий также вложен в цикл. Таким образом, он будет вызван много-много раз. Но вышеприведенный цикл foreach, похоже, увеличивает память.

Я вызываю прямые вставки в базу данных, поэтому менеджер сущностей даже не используется, так как изначально я думал, что это может замедлить его работу.

Редактировать:
Я попытался изменить bindParam на bindValue, но возникает та же проблема. и перемещение второго bindParam за пределы цикла;

2

Решение

Отключая ведение журнала SQL в доктрине, проблема утечки памяти решается, учитывая количество запросов, запускаемых в этом приложении.

$conn = $this->getEntityManager()->getConnection();
$conn->getConfiguration()->setSQLLogger(null);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]