PHP:内存不足异常,但我已经更改了memory_limit

时间:2016-02-17 10:03:35

标签: php memory out-of-memory

我收到了这个错误:

PHP Fatal error: Allowed memory size of X bytes exhausted

所以,经过一些研究后我改变了我的php.ini文件:

memory_limit: 2048M

上一条错误消息已停止但我收到此错误:

Fatal error: Out of memory (allocated 1746927616) (tried to allocate 268435456 bytes) in [path]

所以我有2048M作为内存限制,在我的错误中,php文件分配了1666M并试图分配256M,这给了1922M。这个值小于我的内存限制,为什么我收到此错误? (我已经检查了我的IIS站点中的php信息,内存限制是我之前提到的那个。)

谢谢:)

编辑:

在发生此错误的行之前,我做了

echo memory_get_usage();

我得到了:

1675848

错误的代码是这样的:

for ($i = $startKey; $i <= $endKey; $i++) {
        array_push($paginas, $files[$i]);
}

2 个答案:

答案 0 :(得分:0)

非常感谢您的提示。它实际上是一个代码设计问题。这不是我的代码(我已经开始在一个已经存在的项目中工作)所以调试并决定我是否寻找一些配置错误或假设代码是坏的有点困难。当我第一次搜索错误时,我发现很多人遇到了同样的问题,我愚蠢地排除了错误的代码(错误是在处理文件的部分中出现问题)。

所以,就我而言,按照这里的建议,我开始查看我的代码并使用

echo memory_get_usage();

要查看是否所有内存都已在该代码行中分配,并发现这是真的。那么我检查了循环变量,有时第一个没有正确地进行初始化,结果是一个无止境的循环。

谢谢大家,抱歉遇到了麻烦:)

答案 1 :(得分:0)

分配内存时,实际上是在请求连续的块。因此,可能发生的事情是需要总内存,但它分为两个或更多块。