symfony2中的批处理过程

时间:2013-08-30 09:56:44

标签: php symfony batch-processing

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

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

enter image description here

然后我想清除每个用户的实体管理员。

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

会导致错误: enter image description here 然后我尝试使用批处理:

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

但它会导致错误 enter image description here

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

1 个答案:

答案 0 :(得分:1)

你可以尝试:

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

  • 当物品到达XX物品时(同时:每100件物品)冲洗物品。每次刷新经理都可以清理经理。