允许的内存大小为 134217728 字节已用尽(尝试分配 42 字节)[关闭]

Posted

技术标签:

【中文标题】允许的内存大小为 134217728 字节已用尽(尝试分配 42 字节)[关闭]【英文标题】:Allowed memory size of 134217728 bytes exhausted (tried to allocate 42 bytes) [closed] 【发布时间】:2016-08-28 05:16:18 【问题描述】:

我正在从 mysql 表中检索记录,每个查询返回超过 0.2m 的行数,这显然会占用大量内存。就我而言,我的系统上安装了 8 GB 的 RAM,SSD 256 GB。 当我执行我的页面时,它返回以下错误:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 42 bytes) in D:\xampp\htdocs\classes\CRUD.php on line 84   

我认为我应该需要在表格行上使用线程而不是 php 循环? 也许我错了。任何建议/帮助将不胜感激。

【问题讨论】:

这个应该在Server Fault问。 您应该对结果进行分页以一次处理更少的结果,显然您的每个线程的内存限制在 php 配置中设置为 132Mb。你可以增加它 写下你的代码,我们可以帮你。可能是该循环中的某些内容导致内存耗尽。 @peuh 你是对的,但是在我的代码中我不允许使用分页,否则这真的是一个非常好的建议。 为什么要在 php 脚本中选择这么多行?通过仅选择使用的字段或使用“分页”来优化查询。 【参考方案1】:

默认 php.ini memory_limit 为 128 MB。您应该:

优化您的代码以使用正常数量的数据 将 php.ini 中的 memory_limit 更改为更高的值,我根本不建议这样做 - 使用您的方法,您将再次碰壁

【讨论】:

【参考方案2】:

您可以使用以下代码行从文件中扩展内存:

ini_set('memory_limit','16M');

将此代码添加到文件的顶部,然后将 16M 设置为您需要的任何内容,并且应该这样做。

【讨论】:

怎么样 => ini_set('memory_limit','2G');它会起作用吗?还是应该有其他好主意? 你可以走得更高,但正如 Maciej Asembler 所说,不建议这样做。我的解决方案是快速修复。理想情况下,您需要简化您的应用程序。 您还应该检查是否可以调用 ini_set。 如果有 laravel 项目的人想知道把它放在哪里!如果代码是在网页调用中执行的,那么你需要把它放在 嗨@AbdulRahman,我面临和你一样的问题。我已经增加到 500MB,但仍然不够。您是如何最终以有效的方式解决问题的?

以上是关于允许的内存大小为 134217728 字节已用尽(尝试分配 42 字节)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 pear :致命错误:允许的内存大小为 134217728 字节已用尽(尝试分配 6144 字节)

致命错误:PHPExcel 中已用尽的允许内存大小为 134217728 字节

允许的内存大小为 134217728 字节已用尽(尝试分配 42 字节)[关闭]

第二个laravel项目(v5.4)PHP致命错误:允许的内存大小为134217728字节已用尽(试图分配262144字节)

图像迁移脚本 - 允许的 134217728 字节内存大小已用尽 [重复]

允许的内存大小 134217728 字节用尽(尝试分配 4294967296 字节)