【问题标题】:Meaning of "Fatal error: Allowed memory size of x bytes exhausted (tried to allocate y bytes)"?“致命错误:已用尽 x 字节的允许内存大小(尝试分配 y 字节)”的含义?
【发布时间】:2011-03-13 22:21:51
【问题描述】:

(这是一个很常见的错误,但是找不到意思。)

Fatal error: Allowed memory size of x bytes exhausted (tried to allocate y bytes)

我有一些问题:

  1. 这显然是内存不足错误,但用 Layman 的话来说是什么意思?
  2. 是否有可能从x获知一些信息(如服务器的RAM)?
  3. y 呢?有时是两位数。

谢谢。

【问题讨论】:

标签: php


【解决方案1】:
  1. 表示PHP脚本使用的内存超过了memory_limit配置选项的值。请注意,这可能与操作系统在错误发生时认为脚本的内存使用情况一致,也可能不一致。
  2. x 为您提供 memory_limit 配置选项的值。您还可以假设服务器至少有足够的虚拟内存来处理限制,但仅此而已。
  3. 不,y 只是压垮骆驼的最后一根稻草那么大。

【讨论】:

  • 稻草/骆驼 +1 - 如果 OP 不是以英语为母语的人,您可能会很高兴解释它的含义
  • @Mark Ba​​ker:哦,这很简单。 “这是‘导致总数超过限制并导致灾难性故障的最后一个小添加’的成语。有关更多详细信息,请参阅 WikipediaWiktionary。”
  • 所以y = x - request_size?非常感谢。
  • 不,y 是失败的内存分配的大小。例如,如果在超过memory_limit(即x)之前还剩下1 个字节,并且程序尝试分配20 个字节,则y 将是20。
【解决方案2】:

x = ini_get('memory_limit');

y = 超过该限制的 php 请求

这里的内存没问题,做一个更好的php脚本或者用ini_set提高memory_limit

不管怎样,你的问题是 dup,一个简单的 google 搜索就可以解决它

【讨论】:

    【解决方案3】:

    触发此错误是因为 PHP 解释器对其运行的脚本有内存大小限制。 “x”部分是限制,“y”是导致脚本触发错误的分配。要覆盖它,您可以使用类似的东西:

    php_value memory_limit xxxM
    

    在您的服务器配置中或

    memory_limit = xxxM
    

    在 PHP 配置中或

    ini_set('memory_limit', 'xxxM');
    

    在脚本本身中。

    【讨论】:

      猜你喜欢
      • 2017-11-12
      • 2013-02-24
      • 2011-09-27
      • 2020-04-10
      • 2013-07-22
      • 2015-03-06
      • 2015-03-08
      • 2014-03-07
      相关资源
      最近更新 更多