【问题标题】:strange Out of memory behavior on phpphp上奇怪的内存不足行为
【发布时间】:2012-01-23 03:52:52
【问题描述】:

您好,出现以下奇怪的错误

致命错误:内存不足(已分配 29097984)(试图分配 802454 字节)

当我做ini_get('memory_limit') 时,我得到了256M

在上述错误中,脚本在到达27M 时终止??

任何建议使用共享主机帐户。

【问题讨论】:

  • 那行是????我猜你在那一行中有一个无限循环/递归。
  • 256M 内存中运行的是什么代码? :o 顺便说一句,我认为当它说它试图分配 27M 时,这意味着脚本在分配该特定块时失败,可能已经使用了更多内存。
  • @Indranil 说已经分配了 27M,他想分配 800kB
  • @TimWolla 啊,我的错,那么。对不起。
  • @TimWolla 有什么建议吗?有什么问题有没有任何 apache 设置可以做到这一点?我的意思是覆盖 php memory_limit ?

标签: php memory-limit


【解决方案1】:

您需要“调试”并找到问题的根源。 我将首先将您的 php 内存限制增加到 526M

使用它来做到这一点:

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

这对于处理任何事情都绰绰有余。如果这仍然不起作用,那么我会在某处寻找无限循环。

【讨论】:

    【解决方案2】:

    如果您在共享主机上,则极有可能您无权更改内存限制。问题很可能是您正在尝试创建一个巨大的数组;您可能想对脚本中当前存在的任何循环结构尝试不同的方法。但如果没有代码,任何人都无能为力。

    【讨论】:

      【解决方案3】:

      即使内存限制为 256 兆字节,也不意味着您的脚本能够分配那么多。原因是 RAM 在各个进程之间共享。其中一些可能已经分配了大量内存并给操作系统留下了几兆字节,因此无论施加的限制如何,您的脚本都无法分配所需的内存。

      您应该关注的是尽可能少地使用 RAM。对于像您这样的数据库结果,最好使用SplFixedArray 而不是“常规”PHP 数组。

      【讨论】:

        猜你喜欢
        • 2021-06-12
        • 2019-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 2013-04-20
        相关资源
        最近更新 更多