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();
查看是否真的在那行代码中分配了所有内存,并确定是真的。所以我检查了循环变量,有时第一个变量没有正确初始化,结果是一个无休止的循环。
谢谢大家,很抱歉给您带来麻烦:)
当你分配内存时,你实际上是在请求一个连续的块。因此,可能发生的情况是拥有所需的总内存,但它被分成两个或更多块。
我遇到了这个错误:
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();
查看是否真的在那行代码中分配了所有内存,并确定是真的。所以我检查了循环变量,有时第一个变量没有正确初始化,结果是一个无休止的循环。
谢谢大家,很抱歉给您带来麻烦:)
当你分配内存时,你实际上是在请求一个连续的块。因此,可能发生的情况是拥有所需的总内存,但它被分成两个或更多块。