0
我在symfony2中創建了一個自定義控制檯命令。該命令將調用api爲所有用戶找到合適的作業。那麼我會得到這樣的錯誤。 我的代碼是這樣的:symfony2中的批處理
$em = $this->getContainer()->get('doctrine')->getEntityManager('default');
$user = $em->getRepository('EnsUserBundle:User')->findAll();
foreach ($user as $user)
{
.....
$em->flush();
}
}
}
然後我想清除每個用戶的EntityManager。
$em = $this->getContainer()->get('doctrine')->getEntityManager('default');
$user = $em->getRepository('EnsUserBundle:User')->findAll();
foreach ($user as $user)
{
.....
$em->flush();
$em->clear();
}
}
}
這將導致一個錯誤: 然後我嘗試使用批處理過程:
$em = $this->getContainer()->get('doctrine')->getEntityManager('default');
$user = $em->getRepository('EnsUserBundle:User')->findAll();
$iterableResult = $em->getRepository('EnsUserBundle:User')->findAll()->iterate();
while (($row = $iterableResult->next()) !== false)
{
foreach ($user as $user)
{
.....
$em->flush();
$em->clear();
}
$em->detach($row[0]);
}
}
但它會導致錯誤
那麼,你有沒有任何好的建議? 謝謝!
謝謝你的回答。但正如你在第二個截圖中看到的那樣。每次我嘗試清除它,我都會得到這個錯誤。你知道爲什麼嗎? –
我建議你清理entityManager每個XX時間(批量處理)。爲什麼你需要使用iterate()函數並將其引入2個循環? –
也許我不需要。因爲我看到了這個http://www.doctrine-project.org/blog/doctrine2-batch-processing.html#mass-object-processing。所以我想也許這可以幫助我。 –