【发布时间】:2011-12-06 06:14:47
【问题描述】:
我的 PHP memory_limit 是 64M(开始时相当高)
我有一个 MongoCollection::findOne() 在我的 PHP 代码中调用,我通过 MongoId “找到一个”。 它在大多数情况下都有效。但是在某些情况下,它会导致 PHP 超过 memory_limit 64M。
Mongo 中的数据记录最大为 3.5MB,因为 Mongo 不允许超过 4MB。
当我运行时,调用 findOne() 之前的 memory_get_usage(),它只有大约 4MB。所以 findOne() 似乎已经消耗了另外 60MB+。这是内存泄漏还是我在 Mongo 中的存储方式存在设计缺陷?
我的 PHP Mongo 驱动是最新的 1.26
【问题讨论】:
-
你有没有向 MongoCollection::findOne() 提供任何东西?
-
代码是这样的:
$cond = array('_id' => new MongoId('4e76e544546ba04617000000')); $record = $objCollection->findOne($cond); // memory exhaustion in this line -
您尝试传入缩放器值(ID 的字符串)而不是对象如何?
-
致命错误:允许的内存大小为 68157440 字节已用尽(试图分配 71 字节) 这就是错误消息。在这种情况下,Mongo 的 findOne() 内部会耗尽所有内存。
-
您能否包含一些 JSON 来记录?我很难相信这是 Mongo。