[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

当使用 CakePHP 查找(“全部”)大量数据时,我内存不足 [我尝试过...编辑]

这是开发团队的Hase。

前几天,
当我尝试使用 CakePHP 使用 find('all') 检索近 100,000 条数据时,内存不足并
出现以下错误。 。

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

因此,我研究了各种节省内存并能够检索近10万行数据的方法。

当前代码

$data = $this->Model->find('all'); // 一些处理......

使用查询()

看起来使用 query() 检索比使用 find('all') 检索更容易处理。
因此,我将其修改为使用 query() 来检索使用 find 检索到的内容。

$data = $this->Model->query("SELECT * FROM hogehoge;"); // 一些处理......

结果

情绪处理变得更容易我感觉就像但,
与我使用 find('all') 检索它时一样,内存不足并且发生错误。

禁用 query() 的缓存

当我查看官方版本时,似乎query()默认有一个缓存查询的机制。
要禁用缓存此查询,
请指定 false 作为第二个参数,例如 query($query, $cachequeries = false)。
因此,我尝试指定 false 作为 query() 的第二个参数。

$data = $this->Model->query("SELECT * FROM hogehoge;", $cachequeries = false); // 一些处理......

结果

总而言之,没有什么特别的变化。 。

使用循环来划分和检索数据

本来,用上面的方法,一次性获取了十万条数据,
内存耗尽也是理所当然的。
所以我尝试使用 limit 和 offset 来划分数据并使用循环处理来获取它。

// 获取数据项数量 $count = $this->Model->find('count'); // 一次获取5000条数据 $limit = 5000; // 循环次数 ({data项目数 ÷ 每次检索的项目数}向上舍入) $loop = ceil($count / $limit); for ($i = 0; $i < $loop; $i++){ // 偏移量 $offset = $ limit * $i; $data = $this->Model->query("select * fromhogehoge as limit {$limit} offset {$offset};", $cachequeries = false); // 一些处理 ... . ……}

结果

这是一个很好的结果。
没有内存错误,数据也被正确检索,所以没有问题! !

因此,如果有人遇到同样的现象,如果您可以将此作为参考,我将不胜感激。

就是这样。

然而,用这种方法...
阅读更多。
当我用 CakePHP 发现(“全部”)大量数据时,内存不足 [已解决] | Beyond Co., Ltd.

如果您觉得这篇文章有帮助,请点赞!
1
加载中...
1 票,平均:1.00 / 11
7,422
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

[大阪/横滨] 积极招募基础设施工程师和服务器端工程师!

写这篇文章的人

关于作者

长谷达也

应届毕业生加入Beyond Co., Ltd.。

我们开发网络系统(开发在浏览器上运行的服务和系统,例如网络服务、数字内容和业务管理系统)和游戏API(开发与应用程序游戏通信的程序)。

我们还为 Shopify 开发私人/自定义应用程序。

原本在大阪事务所工作,2019年调到横滨事务所。
我的爱好是棒球/卡拉OK/动漫