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


PHP: Out of memory exception but I've already changed the memory_limit

我收到此错误:

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]);
}

谢谢你的提示。这实际上是一个代码设计问题。这不是我的代码(我已经开始在已经存在的项目中工作(,因此进行调试并决定我是否查找某些配置错误或假设代码不正确有点困难。当我第一次搜索错误时,我发现很多人都有同样的问题,以至于我愚蠢地删除了糟糕的代码(错误发生在处理文件的部分中(。

因此,就我而言,正如此处建议的那样,我开始查找我的代码并使用

echo memory_get_usage();

查看是否真的在该行代码中分配了所有内存,并找出这是真的。因此,我检查了循环变量,有时第一个变量没有正确启动,结果是无休止的循环。

谢谢大家,很抱歉给您带来麻烦:)

当您分配内存时,您实际上是在请求一个连续的块。因此,可能正在发生的事情是具有所需的总内存,但它被分成两个或多个块。