0

是否有可能在findAll()方法期间释放 CakePHP 使用的整个内存?我尝试将数据库上的巨大选择分成单个部分,但我找不到memory_get_usage在每个部分之后删除内存(通过)的方法。我尝试TableModel在每个 Select 之后取消设置clearCachecacheMethods = false并且public $cacheQueries = false都没有减少 CakePHP 在 mysql - Database 上的 Selects 的内存使用量。我正在使用 CakePHP 2.4.*

我从 3792752 字节的内存使用开始。通过选择大约 90k 的数据行最终得到 249679096 字节。

请帮我!我只是努力上网试图解决内存泄漏问题。但我只是没有发现任何有用的东西。

4

2 回答 2

1

正在使用的内存量更多地指向代码中某些错误的方向。确保 debug 设置为 2 或 3 并检查代码是否有错误。尝试在 PhPMyAdmin 中运行 sql 查询,它可能会告诉您查询数据库的方式有问题。

于 2013-05-30T20:06:43.930 回答
1

@user2140111 当前版本为 2.3.5 时,您如何使用 Cake 2.4.*?你在使用一些不稳定的分支还是什么?尝试使用 SQLEXPLAIN直接在数据库上运行查询,以查看那里发生了什么。还可以使用 SQLlimit将其“拆分”部分,然后检查内存使用情况。

238 MB 是很多内存,但我怀疑它只是来自 DB 选择 - 这是非常私密的,以至于您不存储任何 blob。你在存储blob吗?

你的记忆中可能有很多未使用的变量。

于 2013-05-31T08:52:05.603 回答