在PHP 5.0.4中,如果未配置-enable-memory-limit,则忽略memory_limit指令.(它在推荐的php.ini文件中设置为8M,但是文档说它被忽略了.)那么在这种情况下,是否存在每个脚本的内存限制,还是只受系统的限制?
我问,因为我升级到PHP 5.2.8,它也允许内存在默认情况下限制.所以现在我实际上必须将值设置为适当的值.推荐的php.ini文件现在设置为128M,但我不知道这是否比默认情况下的5.0.4 更多或更少!
我正在升级生产系统,所以我想避免任何重大的行为改变.该文档(搜索"memory_limit的")在这一点上非常混乱.它表示"默认",但我不知道这是否意味着配置文件中设置的默认值,或者禁用内存限制时使用的默认值.
PHP中的内存限制器是可选的; 如果你在编译时禁用它,那就完全没有限制了.
在5.0.4中它被禁用,除非你在编译时明确要求它,原因是内存限制器在5.2之前没用,并且没有计算它应该做的很多事情,包括mysql函数之类的东西.它原来在从5.2.1现在他们学会了算.
如果有疑问,请将其禁用或确保更新配置文件以使用新的默认值.将它保留在8MB并升级到5.2.8几乎肯定会引起问题.
128M非常高。您可能需要它,但我会感到惊讶。
更重要的是,可以在php.ini中将限制设置为全局默认值:
memory_limit = 32M
您还可以在脚本中覆盖它:
您可能会发现只有少数几个需要大量内存的脚本。找到一些舒适的价值(通过测试),然后将其用于需要更多价值的东西。
+1,PHP的垃圾收集器坏了不止一次。由于摆脱超时非常流行,因此重要的是要知道您的代码实际上是对计算机执行的操作。