我最近遇到了内存分配问题,所以我开始ini_set('memory_limit', value);
尝试尝试增量输入值的指令。现在,通过网络(和 SO)搜索,我发现我可以-1
将value
. 所以,我做到了,现在脚本完全运行到最后而没有中断(在我曾经得到内存分配错误之前)。
但是,我不明白的是,鉴于脚本文件末尾的这两行:
$mem = memory_get_peak_usage(true);
echo "Peak mem. usage: <b>" . round($mem / 1024 / 10124, 2) . "</b> MB";
产生大约10.8MB,当我查看时,/var/log/messages
我可以看到这条线:
Nov 21 13:52:26 mail suhosin[1153]: ALERT-SIMULATION - script tried to increase
memory_limit to 4294967295 bytes which is above the allowed value (attacker
'xx.xxx.xxx.xxx', file '/var/www/html/file.php', line 5)
这意味着脚本试图分配4096MB!
怎么会这样?而且,我最感兴趣的是为什么在这种情况下脚本执行没有停止?ini_set('memory_limit', '-1');
是不是因为 我的意思是,我确实读过,-1
因为value
不推荐,我知道问题出在脚本中(在内存中一次读取过多的数据),我会通过顺序读取来修复它,但我我只是对这些数据差异感到困惑,所以如果有人能对此有所了解,我将不胜感激。