Доброго времени суток!
Есть задача спарсить значения одной таблицы и добавить в другую.
Дана сущность, которая характеризует связь "многое ко многим" между Product и Feature с заполненными product_id и feature_id. В свойство "value" этой сущности нужно добавить значения из другой, ошибочной, сущности.
Вот мною написанный скрипт
private function parseValuesForProductsFeatures()
{
$em = $this->getContainer()->get('doctrine')->getManager();
for ($iteration = 1; $iteration < 1003884; $iteration += 1) {
$productsFeaturesValue = $em->getRepository('MainCatalogBundle:ProductsFeaturesValues')->findOneBy(array(
'id' => $iteration,
));
$productId = $productsFeaturesValue->getProduct()->getId();
$featureId = $productsFeaturesValue->getFeature()->getId();
$fieldsValue = $em->getRepository('MainCatalogBundle:MistakeProductsFeatures')->findOneBy(array(
'productId' => $productId,
'featureId' => $featureId,
));
$value = $fieldsValue->getValue()->getValue();
$productsFeaturesValue->setValue($value);
if ($iteration % 200 === 0) {
$em->flush();
$em->clear();
}
}
$em->flush();
$em->clear();
}
Учитывая, что строк около миллиона оперативной памяти не хватает. Выполнение unset() со всеми переменными в конце каждой 200 итерации не помогает. Куда копать, что решить проблему?