首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP 3批处理查询以减少内存

问CakePHP 3批处理查询以减少内存
EN

Stack Overflow用户
提问于 2017-05-17 12:20:22
回答 1查看 1K关注 0票数 0

Laravel雄辩有一个游标方法,允许您使用游标迭代数据库记录,这将只执行一个查询。在处理大量数据时,可以使用游标方法大大减少内存使用(请参阅https://laravel.com/docs/5.4/eloquent#retrieving-models)。

CakePHP 3有一个高级的ORM,是否有类似于Laravel中的游标方法?似乎没有在书中提到:https://book.cakephp.org/3.0/en/orm.html

EN

回答 1

Stack Overflow用户

发布于 2017-05-17 13:28:50

我不知道在Laravel中cursor()和非cursor()的使用究竟有什么不同(除了明显的),但是在CakePHP中,您可能需要的是Query::bufferResults(),分别是Query::enableBufferedResults() (截至CakePHP 3.4)。

代码语言:javascript
复制
$query->bufferResults(false)
代码语言:javascript
复制
$query->enableBufferedResults(false)

禁用结果缓冲将停止结果集在内存中的缓冲,对于MySQL,它还将禁用MYSQL_ATTR_USE_BUFFERED_QUERY。

未缓冲的结果集只能迭代一次,结果不能缓存/序列化。此外,对于包含在单独查询中检索的关联的查询(对于hasMany和belongsToMany总是如此),不能禁用缓冲。

另请参阅

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44024706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档