我正在尝试掌握PHP内存分配的基础知识,似乎我缺少一些基础知识。 假设我们有以下代码:
<?php
ini_set('memory_limit','10000');
$a = '';
for ($i=0; $i<=10000000; $i++) {
$a .= '1';
}
执行此操作会产生以下错误:
Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 153801 bytes) in /var/www/html/index.php on line 7
这意味着内存的ini_set没有考虑到这个值(使用相当大的内存就可以了)。此操作是否存在0.25MB(262144字节)的硬最小值?
另外,据说我们只有一个空脚本,什么也不做,我们调用
echo memory_get_usage(true);
这将输出786432字节。
所以我很困惑。一个空脚本正在使用0.75M的内存。如果我通过ini_set命令将允许的内存限制为262144,那么脚本的执行方式(它仍然执行OK)。