Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 超大表导致允许的内存大小为x字节的错误_Php_Orm_Doctrine Orm_Zend Framework2 - Fatal编程技术网

Php 超大表导致允许的内存大小为x字节的错误

Php 超大表导致允许的内存大小为x字节的错误,php,orm,doctrine-orm,zend-framework2,Php,Orm,Doctrine Orm,Zend Framework2,我有一个连接到大型表的实体:200.000行 我面临的问题是,当我将实体对象绑定到表单中时,会出现以下错误: 致命错误:允许的内存大小134217728字节已用尽(已尝试 在中分配85个字节) /../public_html/application/vendor/doctrine/orm/lib/doctrine/orm/Internal/Hydration/AbstractHydrator.php 在线296 注释为: /** * @ORM\OneToMany(targetEntity="T

我有一个连接到大型表的实体:200.000行

我面临的问题是,当我将实体对象绑定到表单中时,会出现以下错误:

致命错误:允许的内存大小134217728字节已用尽(已尝试 在中分配85个字节) /../public_html/application/vendor/doctrine/orm/lib/doctrine/orm/Internal/Hydration/AbstractHydrator.php 在线296

注释为:

/**
 * @ORM\OneToMany(targetEntity="This\Entity\Table", mappedBy="id")
 **/
private $sometable;
我认为正在发生的事情是,条令试图将表加载到内存中,而这正是扼杀进程的原因

当我对表格进行注释时,一切正常

我阅读了有关延迟加载的内容,并尝试将其添加到注释中:

 fetch="EXTRA_LAZY"
然而,这并没有解决问题

我通过服务加载实体:

$object = $this->someRepository->find($id);
// And bind..
$this->form->bind($object);

处理这种情况的正确方法是什么?

很抱歉,200k表并不庞大,事实上,无论在什么地方,MySql都应该在亚秒时间内返回这样的查询。因此,我认为问题在于您的映射和索引或缺少。您还应该查看数据库缓存,但首先要对索引和查询进行排序


用更多代码更新您的问题。

如果不知道相关表中的数据大小、查询方式、关联方式(uni bi/direct)以及DoctrineORMModule的当前配置,很难说内存耗尽的正确原因。出于开发目的,
128M
的内存对于大型、成熟和复杂的库(如doctrine)来说非常低。我强烈建议将
php.ini
中的
内存限制增加到
256M
或更高。你能把这个问题再改进一点吗?。例如,在您的环境中是否启用了
xdebug