PHP:内存不足异常,但I';我已经更改了内存限制

PHP:内存不足异常,但I';我已经更改了内存限制,php,memory,out-of-memory,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 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]);
}

for($i=$startKey;$i谢谢你的提示。这实际上是一个代码设计问题。这不是我的代码(我已经开始在一个已经存在的项目中工作)因此,调试和决定是否查找某些配置错误或假设代码是错误的变得有点困难。当我第一次搜索错误时,我发现很多人都有相同的问题,以至于我愚蠢地找出了错误代码(错误出现在处理文件的部分)

因此,在我的例子中,正如这里所建议的,我开始查找我的代码并使用

echo memory_get_usage();
然后我检查了循环变量,有时第一个变量没有正确初始化,结果是没有结束的循环


谢谢大家,很抱歉给你们添麻烦:)

好的,谢谢你们的提示。这实际上是一个代码设计问题。这不是我的代码(我已经开始在一个已经存在的项目中工作),所以调试和决定是否查找一些配置错误或假设代码是错误的有点困难。当我第一次搜索这个错误时,我发现很多人都有同样的问题,以至于我愚蠢地写出了错误的代码(错误出现在处理文件的部分)

因此,在我的例子中,正如这里所建议的,我开始查找我的代码并使用

echo memory_get_usage();
看看这行代码中是否真的分配了所有内存,并找出这是真的。然后我检查了循环变量,有时第一个变量没有正确初始化,结果是没有结束的循环


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

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

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

那么,您是否在更改后重新启动了APACHE???@devpro我正在使用IIS,并在更改内存限制后重新启动了服务器。在那之后,错误消息发生了变化(这是我在问题中显示的最后一条)。如果在Win32上运行,可能会达到每个进程2Gb的限制。剩下的120Mb左右可能被其他PHP数据和Apache本身使用?如此高的值通常不是一个实际的内存限制问题,而是一个代码设计问题。你的程序在做什么?它真的需要2GB吗?你在更改后重新启动了APACHE吗???@devpro我正在使用IIS,在更改内存限制后重新启动了服务器。在那之后,错误消息发生了变化(这是我在问题中显示的最后一条)。如果在Win32上运行,可能会达到每个进程2Gb的限制。剩下的120Mb左右可能被其他PHP数据和Apache本身使用?如此高的值通常不是一个实际的内存限制问题,而是一个代码设计问题。你的程序在做什么?它真的需要2GB吗?