我需要运行一个PHP CLI脚本并为它提供大量内存(它是一个需要覆盖大量代码库的自动文档生成器).我有一个功能强大的机器,并已分配5GB到PHP,在php.ini和脚本文件中的内联ini_set(‘memory_limit’,’5120M’)声明.
如果我将这些行添加到脚本的顶部:
phpinfo();
exit();
…它声称它的内存限制为5120M,正如我指定的那样.
但剧本仍然出错,说
Fatal error: Allowed memory size of 1073741824 bytes exhausted
…这是1GB,而不是我指定的5GB.
脚本可能正在寻找其他任何地方来确定其内存限制吗?这是在Fedora Linux中运行的.
(是的,最终的解决方案可能是重写脚本以提高效率,但我没有首先编写它,所以在我诉诸于此之前,我想把资源投入其中,看看是否有效. )
解决方法:
堆限制属性是size_t,在32位计算机上为32位.如果这是以字节为单位,则会将内存限制限制为4 GB.您可以尝试使用64位PHP在64位计算机上运行它.
编辑:确认,heap-> limit是size_t(unsigned int),以字节为单位. memory_limit为-1将heap->限制设置为4GB,并且不会像文档所暗示的那样禁用它.将其设置为5GB使其环绕至1GB.
标签:php,memory-management,linux,fedora
来源: https://codeday.me/bug/20190621/1257893.html