当前位置:  开发笔记 > 编程语言 > 正文

Yii findAll()导致内存问题

如何解决《YiifindAll()导致内存问题》经验,为你挑选了1个好方法。

我拥有的记录数量仅为15000.并且配置使用的内存php为128 MB.所以我得到这个错误.

允许的内存大小为134217728字节耗尽

有两种方法可以解决这个问题.

    DAO http://www.yiiframework.com/doc/guide/1.1/en/database.dao

    增加PHP中允许的内存

我感到困惑的是,如果我将允许的内存增加到256,有一天当数据的数量变为30 000时,这个错误将再次出现.

所以当我开发大规模应用程序时,我不应该使用Yii cactiverecord findAll()吗?或者我应该随着更多数据的增加而不断增加内存大小.

什么是最好的方法?



1> Fabrizio Cal..:

尝试使用批次检索数据:

http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#data-in-batches

// fetch 10 customers at a time
foreach (Customer::find()->batch(10) as $customers) {
    // $customers is an array of 10 or fewer Customer objects
}

// fetch 10 customers at a time and iterate them one by one
foreach (Customer::find()->each(10) as $customer) {
    // $customer is a Customer object
}

// batch query with eager loading
foreach (Customer::find()->with('orders')->each() as $customer) {
    // $customer is a Customer object with the 'orders' relation populated
}

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有