Php CLI script ignoring memory_limit, crashing at much lower number than limit

六眼飞鱼酱① 提交于 2019-12-07 02:27:05

问题


for some reason, my one of my php scripts are ignoring the php.ini memory limit or ini_set.

When i do a print_r(ini_get_all) it shows the global memory limit set to 100M (and local for that matter), when my script dies at Fatal error: Out of memory (allocated 24714304) (tried to allocate 571 bytes)

Any tips on diagnosing this? The server has 8gigs of memory and never had problems running this script before.

Any tips on debugging this?

Thanks!


回答1:


The single most common cause of this is that usually the CLI PHP binary is using a different php.ini file than you expect. This can be caused by user permissions, or simply different default php.ini files for installed versions of PHP. However, it sounds like you've profiled it a bit and your memory limit may be correct inside your script.

In that case, it's quite possible that there is a hard memory limit on processes that is imposed by your operating system, in which case you'll have to figure out where the imposition comes from.

I suggest taking a look at this thread, as that poster went through something very similar to your situation.




回答2:


The virtual memory for my processes was being hard limited (too a much lower number).

From a bash shell i did this:

ulimit -v (memory_in_bytes, no parentheses)

this fixed my problem. god i love stackoverflow




回答3:


the short and sweet

ini_set('memory_limit', -1);

in case you want to skip the debugging



来源:https://stackoverflow.com/questions/1982404/php-cli-script-ignoring-memory-limit-crashing-at-much-lower-number-than-limit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!