Yii模型findAll memory_limit

时间:2016-07-20 16:56:52

标签: php yii findall

当我使用findAll()函数时retuns使用CActiveRecord objects数组,但是当我必须对大数据进行导出时,此array超出允许memory size

例如:

$criteria = new CDbCriteria();
$criteria->with = array('relation_a', 'relation_b');
$criteria->condition = "condition_a=:a AND condition_b=:b";
$data = MyModel::model()->findAll($criteria);

现在$dataactive record的数组。 我可以使用CDbDataReader之类的内容逐一获取MyModel吗?

由于

2 个答案:

答案 0 :(得分:0)

据我所知,处理CActiveRecord时没有这样的事情。即使有这样的选项,php仍然需要将对象存储在某个地方,就像CDbDataReader的工作方式一样,除非使用了无缓冲的查询(这会对数据库服务器造成压力)。

您需要尝试使用已加载的对象减少内存占用(仅选择您需要的内容,如果需要,只选择延迟加载关系)或坚持使用查询构建器以进一步减少内存使用。

答案 1 :(得分:0)

你可以添加$ criteria-> limit = 100,然后你不会超过内存大小。