我试图在php脚本中测试内存分配。我在php.ini中将限制设置为128M。在脚本中,ini_get('memory_limit')报告128M为限制。问题是,当我开始分配空间时,我无法超越23M。我可以将内存分配限制在23M以下的任何级别,但不能分配更多内存。只是寻找这个限制在哪里被施加的线索。
这是我的测试脚本...
echo "System imposed memory_limit is set to: " . ini_get('memory_limit') . "
\n";
for ($i=1; $i<1000; $i++) {
$a = loadmem($i);
echo "You have allocated ". $i . "M (". memory_get_usage() . ") memory in this php script" . "
\n";
unset($a);
}
function loadmem($howmuchmeg) {
$a = str_repeat("0", $howmuchmeg * 1024 * 1024); // alocating 10 chars times million chars
return $a;
}
?>这里是使用curl的输出...
System imposed memory_limit is set to: 128M
You have allocated 1M (1403632) memory in this php script
You have allocated 2M (2452232) memory in this php script
You have allocated 3M (3500808) memory in this php script
You have allocated 4M (4549384) memory in this php script
You have allocated 5M (5597960) memory in this php script
You have allocated 6M (6646536) memory in this php script
You have allocated 7M (7695112) memory in this php script
You have allocated 8M (8743688) memory in this php script
You have allocated 9M (9792264) memory in this php script
You have allocated 10M (10840848) memory in this php script
You have allocated 11M (11889424) memory in this php script
You have allocated 12M (12938000) memory in this php script
You have allocated 13M (13986576) memory in this php script
You have allocated 14M (15035152) memory in this php script
You have allocated 15M (16083728) memory in this php script
You have allocated 16M (17132304) memory in this php script
You have allocated 17M (18180880) memory in this php script
You have allocated 18M (19229456) memory in this php script
You have allocated 19M (20278032) memory in this php script
You have allocated 20M (21326608) memory in this php script
You have allocated 21M (22375184) memory in this php script
You have allocated 22M (23423760) memory in this php script
You have allocated 23M (24472336) memory in this php script
这里是相关的error_log条目...
mmap() failed: [12] Cannot allocate memory
PHP Fatal error: Out of memory (allocated 2097152) (tried to allocate 25165856 bytes)使用PHP 7.0.x和apache2.2