PHP 和 Mongo - findOne() 导致内存耗尽

标签 php mongodb

我的 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

最佳答案

如果您能发布您正在运行的确切代码,将会很有帮助。这很可能是您的代码,但也有可能是 Mongo PHP 驱动程序的错误。最新版本的驱动程序 (1.2.9) 似乎比以前的版本倒退了一步。我自己在驱动程序中发现了一个错误,导致 php 在连接超时时出现段错误:o 在与 10gen 开发人员的对话中,我发现 php 驱动程序是所有语言中最不成熟的,但有人告诉我他们刚刚聘请了一个 php 开发人员,所以驱动程序应该很快就会得到一些爱。

关于PHP 和 Mongo - findOne() 导致内存耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8396061/

相关文章:

php - Zend 框架 2 中的 Zend\ServiceManager\Exception\ServiceNotFoundException

Mongodb 地理空间查询不报告球形包裹错误,但返回奇怪的结果

mongodb - 如何更改生成表中的列顺序(grails 约束不适用于 mongodb 插件)

javascript - 如何连接该 mongodb 集合中的所有成员 ID?

PHP PDO 选择并输出第一个找到的行结果

php - PDO MySQL 在执行语句时使 apache 崩溃

php - Zend Framework中如何做preDispatch转发?

mongodb - Spark - 如何在map()中创建新的RDD? (对于 Executor,SparkContext 为 null)

javascript - MongoDB 迭代文档集合

php - 如果未选中,则尝试设置默认复选框值