Symfony2的最大数据大小

时间:2013-03-15 08:31:31

标签: symfony doctrine-orm

所以我有一个包含3500个元素的数据库表。当我尝试显示这些数据时,我收到了这条消息:

  

致命错误:在C:\ Program Files \ EasyPHP-5.3.8.0 \ www \ Symfony \ vendor \ doctrine \ lib \ Doctrine \ ORM \ Mapping \ ClassMetadata中,允许的内存大小为134217728个字节(尝试分配77个字节)第344行的.php

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找一个迭代器 This article将向您展示如何处理大数据。

$q = $this->_em->createQuery("<DQL to select the objects I want>");
$iterableResult = $q->iterate();
while (($row = $iterableResult->next()) !== false) {
        // do stuff with the data in the row, $row[0] is always the object
        $this->_em->detach($row[0]); // detach from Doctrine, so that it can be GC'd immediately
 }

这段代码不是将所有数据加载到单个数组中,而是创建一个迭代器来防止大量加载和这种错误。

但是,如果您只是想了解如何增加PHP的内存大小,请查看this answer

ini_set('memory_limit', '1G');

答案 1 :(得分:0)

谷歌的“分页”:)通常没有理由一次获取每个实体,因为(例如)谁想等待并在一个页面上读取一个包含3500个条目的巨大列表?如果您真的需要它们(例如进行进一步处理),请以块的形式读取和处理它们。

btw:这不是S2s的错,内存是有限的:)