我仍然遇到Cake的Mempry使用问题。我读了很多威胁,并尝试了1000件事情,但没有什么帮助。 我使用CakePHP 2.4.x.使用MySQLdB。我编写了一个API来从数据库中选择日志数据。我做了一个测试来解释我多么困惑。我有一个选择返回与11列1400行。我的一般内存使用(使用memory_get_usage)大约是4MB。 后,我选择具有:CakePHP的内存分配问题
$condition = array('conditions'=> array(
'LogBackend.created_at between ? AND ?' => array(
$this->params['url']['from'],$this->params['url']['to']
)));
$this->data = $this->LogBackend->find('all', $condition).
我的内存使用量只是爆炸比9MB以上。数据依然没有任何回报或任何工作。只是选择。那么9MB并没有那么多,但如果我选择更多,就应该有可能围绕100k行左右。我的256MB空间不足。 有人可以告诉我这种荒谬的内存使用的原因?
问候
您是否在使用可容忍的行为?你是否在某处设置了'$ recursive'? – Nunser
你真的需要在内存中有100k行吗?你不能限制你的查询使用有限的一组数据吗?或者使用循环选择,处理和清理数据?这不是一个CakePHP内存问题,它是一个方法问题。 – cernunnos
@cernunnos我同意,当然取决于具体目的,这可以以不同的方式实现。但是,国际海事组织在这里不是没有责任。 CakePHP模型总是以数组的形式返回结果,导致整个记录集被加载到内存中。例如,如果OP想要实现导出功能,那么通过标准的CakePHP模型是不可能的。创建使用[无缓冲查询]的自定义模型/数据源(http://php.net/manual/en/mysqlinfo.concepts.buffering.php)可能是一个解决方案。 – thaJeztah