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]);
}
}
을하지만
그래서 오류로 연결, 당신은 할 좋은 충고? 감사합니다.
저에게 감사드립니다. 하지만 두 번째 스크린 샷에서 보셨 듯. 내가 그것을 지우려고 할 때마다, 나는이 오류를 얻을 것이다. 왜 그런지 알아? –
각 XX 시간마다 entityManager를 지우는 것이 좋습니다 (대량 처리). 왜 iterate() 함수를 사용하여 2 개의 루프에 포함시켜야합니까? –
아마도 내가 필요 없다. 내가 이것을 보았 기 때문에 http://www.doctrine-project.org/blog/doctrine2-batch-processing.html#mass-object-processing. 그래서 나는 그것이 나를 도울 수 있다고 생각한다. –