Php 使用大约2MB内存耗尽内存

Php 使用大约2MB内存耗尽内存,php,Php,我正在与一个有内存问题的php进行斗争 脚本将随着以下消息而消失: PHP致命错误:第9行test.PHP中允许的内存大小为2097152字节(尝试分配3027408字节) 我创建了一个小测试脚本: <?php function memstat($file, $line) { $memlog = fopen('mem.log', "a+"); fwrite($memlog, sprintf('mem @ %s %d: %d (%d; peek: %d)

我正在与一个有内存问题的php进行斗争

脚本将随着以下消息而消失:
PHP致命错误:第9行test.PHP中允许的内存大小为2097152字节(尝试分配3027408字节)

我创建了一个小测试脚本:

<?php
function memstat($file, $line) 
{
    $memlog = fopen('mem.log', "a+");
    fwrite($memlog, sprintf('mem @ %s %d: %d (%d; peek: %d)'.PHP_EOL, $file, $line, memory_get_usage(), memory_get_usage(true), memory_get_peak_usage()));
    fclose($memlog);
}
memstat(__FILE__, __LINE__);
$str = str_pad('', 1523687, ' ');
memstat(__FILE__, __LINE__);
print 'end '.strlen($str);
?>

正如您所看到的,内存限制是2GB,当它试图分配超过2MB的内存时,它仍然会死掉。

看看您的
内存限制。错误显示
已耗尽2097152字节的允许内存大小
。它不是
2GB


控制台日志(2097152/2**20+“MB”)是的,我知道,2097152大约是2MB,这就是我在标题中写它的原因。无论我为内存限制设置了什么,从128MB到2GB,php分配的内存不能超过2MB。这就是问题所在,我不知道该怎么办。这是您的代码的结果:
string(3)“2GB”mem@test.php 15:0.37 MB(2.00 MB;峰值:0.41 MB)致命错误:在C:\web\test.php第16行的允许内存大小为2097152字节(试图分配100000 24字节)
仔细看看我的答案,它说64M不是64MB:)哦,我现在明白了,我没有注意到,这很尴尬。非常感谢。诺诺诺,我本可以强调一下,但我故意没有,所以你必须仔细观察——这个过程叫做学习,你永远不会忘记;)
string(3) "2GB"
mem @ C:\web\test.php 15: 0.37 MB (2.00 MB; peak: 0.41 MB)

Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 10000024 bytes) in C:\web\test.php on line 16