0

我在 symfony2 中创建了一个自定义控制台命令。此命令将调用 api 为所有用户找到合适的工作。然后我会收到这样的错误。我的代码是这样的:

 $em = $this->getContainer()->get('doctrine')->getEntityManager('default');
            $user = $em->getRepository('EnsUserBundle:User')->findAll();
                foreach ($user as $user) 
                {
                    .....
                    $em->flush();
                }
            }
        }

在此处输入图像描述

然后我想为每个用户清除实体管理器。

$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]);
        }
    }

但这会导致错误 在此处输入图像描述

那么,您有什么好的建议吗?谢谢 !

4

1 回答 1

1

你可以试试:

  • 增加脚本在 php 中消耗的最大内存:php.ini memory_limit = 512M

  • 当物品达到 XX 项时刷新您的对象(例如:每 100 项)。您可以在每次刷新时清除您的经理。

于 2013-08-30T12:42:56.987 回答