PHP CLI脚本如何确定其内存限制?

Nat*_*ong 4 php linux memory-management fedora

我需要运行一个PHP CLI脚本并为它提供大量内存(它是一个需要覆盖大量代码库的自动文档生成器).我有一个功能强大的机器,并已分配5GB到PHP,在脚本文件php.ini中的内联ini_set('memory_limit','5120M')声明中.

如果我将这些行添加到脚本的顶部:

phpinfo();
exit();
Run Code Online (Sandbox Code Playgroud)

...它声称它的内存限制为5120M,正如我指定的那样.

但剧本仍然出错,说

Fatal error: Allowed memory size of 1073741824 bytes exhausted
Run Code Online (Sandbox Code Playgroud)

...这是1GB,而不是我指定的5GB.

脚本可能正在寻找其他任何地方来确定其内存限制吗?这是在Fedora Linux中运行的.

(是的,最终的解决方案可能是重写脚本以提高效率,但我没有首先编写它,所以在我诉诸于此之前,我想把资源投入其中,看看是否有效. )

Sjo*_*erd 5

堆限制属性是size_t,在32位计算机上为32位.如果这是以字节为单位,则会将内存限制限制为4 GB.您可以尝试使用64位PHP在64位计算机上运行它.

编辑:确认,heap-> limit是size_t(unsigned int),以字节为单位.memory_limit为-1将heap-> limit设置为4GB,并且不会像文档所暗示的那样禁用它.将其设置为5GB使其环绕至1GB.