致命错误:X:\wamp\www\xxx 内存不足(已分配 1134559232)(试图分配 32768 字节)

Posted

技术标签:

【中文标题】致命错误:X:\\wamp\\www\\xxx 内存不足(已分配 1134559232)(试图分配 32768 字节)【英文标题】:Fatal error: Out of memory (allocated 1134559232) (tried to allocate 32768 bytes) in X:\wamp\www\xxx致命错误:X:\wamp\www\xxx 内存不足(已分配 1134559232)(试图分配 32768 字节) 【发布时间】:2014-05-27 19:44:27 【问题描述】:

我在我的个人 PC 上的本地主机上使用 WAMP 服务器(32 位)。我有一个大(非常大)多维数组,它通过读取包含长句子的 CSV 文件(CSV 文件包含 20,000 行信息)来获取其信息。问题是在进行一些计算时出现以下错误:

致命错误:内存不足(已分配 1134559232)(试图分配 32768 字节)在 x:\wamp\www\xxx

我尝试了不同的解决方案,例如增加 upload_max_filesizepost_max_sizemax_file_uploadsmemory_limit 或在 php.ini 中或在我的脚本开始时将其设置为 -1,但没有人工作。请帮助我,请不要让我重新设计我的代码或更改 WAMP 的版本,由于某些原因这是不可能的。非常感谢。 :)

【问题讨论】:

更改php.ini中的限制后是否重启了apache? 假设您更改了 php.ini 中的memory_limit 设置并重新启动了 apache 服务,您是否确保更新了正确的 php.ini 文件? (有两种,一种用于 HTTP 服务,一种用于命令行界面。) 我检查了 phpinfo(),它显示 memory_limit 设置为 -1,所以看来我已经更新了正确的。我重新启动了apache,仍然没有变化:( 看看这个帖子是否有帮助:***.com/questions/4399138/… 但我也遇到了我们在 Hostgator 共享服务器中托管的相同错误,我该如何访问这些文件 【参考方案1】:

将此行放在代码的开头:

ini_set("memory_limit", -1);

PHP手册中对memory_limit的描述如下:

这将设置允许脚本分配的最大内存量(以字节为单位)。这有助于防止编写不佳的脚本耗尽服务器上的所有可用内存。请注意,要没有内存限制,请将此指令设置为 -1。

在 PHP 5.2.1 之前,为了使用该指令,必须在编译时通过在配置行中使用 --enable-memory-limit 来启用它。在 5.2.1 之前定义函数 memory_get_usage() 和 memory_get_peak_usage() 时也需要此编译时标志。

当使用integer 时,该值以字节为单位。也可以使用this FAQ 中描述的速记符号。

我不知道是什么让他们如此自信,以至于只有写得不好的脚本需要调整这个设置,但我希望这个简短的介绍无论如何都能满足你的需要。

【讨论】:

谢谢。增加memory_limit或设置为-1无助于解决问题,【参考方案2】:

不是这些设置,而是memory_limit,PHP 脚本可以消耗的最大内存量。但是,在任意增加这个设置之前,请确保您的服务器有足够的资源。

【讨论】:

谢谢。增加memory_limit或设置为-1无助于解决问题, 您是否完全看到相同数字的相同错误?如果是这样,那么您的更改有问题。创建一个包含phpinfo(); 的脚本,并查看它对memory_limit 的说明以及您的php.ini 文件的位置。同时重新启动 apache 以获取更改 我检查了 phpinfo() 并显示 memory_limit 设置为 -1 。而且我在错误中没有看到完全相同的数字。我重新启动了apache,仍然没有变化:( 你的 PHP 版本是多少?请参阅@Sharanya-Dutta 的答案中关于需要将其编译到 PHP pre 5.2.1 中的注释 是的,我看到了,我的 PHP 版本是 5.4.16【参考方案3】:

我终于找到了解决办法。我发现当 PHP 收集垃圾快满时,没有办法释放它。 Unsetgc_collect_cycles() 也无效。唯一的方法是在不同的代码部分使用 Function。就我而言,我在 for 循环中有一个大脚本,所以我将所有代码复制到一个函数中,并在我的循环中调用该函数。每次功能安静时,内存都会释放。您可以通过在函数中添加一次memory_get_usage() 来测试它,然后在函数中添加一次以查看差异。

【讨论】:

你能帮我解决我的问题吗? ***.com/questions/34560732/…

以上是关于致命错误:X:\wamp\www\xxx 内存不足(已分配 1134559232)(试图分配 32768 字节)的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:使用任何“npm”命令时 JavaScript 堆内存不足

处理内存不足后返回的 Angular API 致命错误处理程序

致命错误:内存不足 Zend 错误 / PhpMyAdmin

PHP致命错误:内存不足(分配80740352)(试图分配12352字节)

Composer 要求内存不足。 PHP 致命错误:允许的内存大小为 1610612736 字节已用完 Voyager

Composer 要求内存不足。 PHP致命错误:允许的内存大小为1610612736字节已用尽