Утечка памяти в Doctrine2 при получении данных

Мне нужно обработать большой набор данных с помощью Doctrine, но я столкнулся с утечками памяти в Doctrine2, и я не могу понять, что еще я могу сделать, чтобы избежать этого.
Я максимально упростил код, но даже этот простой код вызывает утечку памяти (обратите внимание, я не делаю никаких вставок, обновлений, сбросов и т. Д. Только выбираю данные)

    gc_enable();

$conn = $em->getConnection();
$conn->getConfiguration()->setSQLLogger(null); // disabling Logger

$batchSize = 10000;

for ($i=0; $i<$batchSize*10; $i+=$batchSize) {
echo "#".$i." - ";

$query = $em->createQuery('
SELECT
p
FROM
Application\Entity\Product p
WHERE
p.id > :id
ORDER BY
p.id ASC
')
->setParameter('id', $i)
->setMaxResults($batchSize);

$query->useQueryCache(false);
$query->useResultCache(false);

$products = $query->getResult();

// trying to clear all that is possible
$query = null;
$products = null;

$em->clear();
$em->close();

gc_collect_cycles();

$mu = memory_get_usage(true);
echo "Memory: ".number_format($mu/1000000, 2)." Mb\n";
}

Вот вывод:

#0 - Memory: 87.29 Mb
#10000 - Memory: 94.37 Mb
#20000 - Memory: 100.66 Mb
#30000 - Memory: 110.36 Mb
#40000 - Memory: 119.01 Mb
#50000 - Memory: 123.99 Mb
#60000 - Memory: 131.07 Mb
#70000 - PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 40 bytes) in ...\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php on line 2615

Что еще я могу попытаться выполнить, чтобы избавиться от этой утечки?

Учение ОРМ 2.4.6
Доктрина DBAL 2.4.2

0

Решение

Задача ещё не решена.

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

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