首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存中的原则ORM,PHP symfony

内存中的原则ORM,PHP symfony
EN

Stack Overflow用户
提问于 2017-06-23 12:18:00
回答 1查看 2.7K关注 0票数 2

我正在运行下面的脚本,从我的DB中选择用户列表并将其传递给我的服务。

$qb = $this->getEntityManager()->createQueryBuilder(); $qb -> select('s') -> from('AppBundle\Entity\SubscriberDetails', 's') -> where($qb->expr()->not($qb->expr()->exists($qb1->getDQL()))) -> setMaxResults($numcampaigns) ; $subscribers = $qb->getQuery()->getResult();

哪里

代码语言:javascript
复制
    $qb1 = $this->getEntityManager()->createQueryBuilder();
    $qb1
        ->select('send')
        ->from('AppBundle\Entity\Subscribers', 'send')
        ->where('DATE_FORMAT(now(), \'%e-%b-%Y\') - DATE_FORMAT(FROM_UNIXTIME(send.last_campaign), \'%e-%b-%Y\') <=360')
        ->andwhere('send.bounced <> 1')
        ->andwhere('send.complaint <> 1')
        ->andwhere('s.emailaddress = send.emailaddress');

下面的脚本适用于30k用户,而我则试图将其扩展为300 k用户选择。当运行300 k用户时,我得到以下错误:

6.0662 132446208 15. Doctrine\ORM\Internal\Hydration\ObjectHydrator->hydrateRowData()/Applications/MAMP/htdocs/mediaff/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php:165 6.0663 132448496 16. Doctrine\ORM\Internal\Hydration\ObjectHydrator->getEntity()/Applications/MAMP/htdocs/mediaff/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php:494 6.0663 132448496 17.原则\ORM\UnitOfWork->createEntity() /Applications/MAMP/htdocs/mediaff/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php:273 6.0663 132449488 18. ReflectionProperty->setValue() /Applications/MAMP/htdocs/mediaff/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2586 6.0781 132445688 19. Symfony\Component\Debug\ErrorHandler::handleFatalError()/Applications/MAMP/htdocs/mediaff/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php:0 6.0782 132434104 20. spl_autoload_call() /Applications/MAMP/htdocs/mediaff/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php:613 6.0782 132434264 21。Symfony\Component\Debug\DebugClassLoader->loadClass()/Applications/MAMP/htdocs/mediaff/vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php:613

我认为第二列是使用的内存。

知道我能怎么克服这个问题吗。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2017-06-26 15:02:35

如果您的数据处理允许这样做,您可以使用分页器并在页面上进行迭代,每次迭代都调用em->clear(),这样就可以使内存消耗保持不变。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44721269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档