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