间歇性的PHP内存分配错误

时间:2014-12-09 18:25:00

标签: php

PHP间歇性地报告荒谬的分配错误。

  

致命错误:允许的内存大小为134217728字节已用完(尝试分配4348209864字节)在第0行的未知中

它试图分配超过4GB的内存。什么? Unknown line 0在哪里?它在哪里尝试分配?

我没有在我的PHP代码中明确分配任何内存,除了库存PHP调用之外我没有使用任何其他内容。我看到我的PHP文件中的最后一行原始HTML(在我退出php块之后)被发出并且在加载的页面中,所以问题似乎没有出现在我的实际PHP代码中。编码是我正在做的事情是触发这个吗?

我发现如果我在编辑实际的PHP文件后不久尝试在浏览器中重新加载PHP文件,这似乎会更频繁地发生,但我不知道这是不是一个好的数据点。 / p>

PHP版本是5.3.26。

为什么我会收到这些错误,这是否需要为生产而担心?

1 个答案:

答案 0 :(得分:2)

耗尽内存池的最常见原因是要么你做了一些资源密集的事情(即试图打开一个20GB的文本文件并将其加载到内存中),要么你已经做了一些无限循环的事情(或者运行足够的时间来耗尽内存池,即返回大量行的SQL查询。

  

Unknown line 0在哪里?它在哪里尝试分配?

PHP无法告诉您,因为它发生在执行(即操作代码)层上。 PHP为您管理您的池(事实上,很难将它直接管理到您可以直接管理它的位置,因为它会通过设计对其进行模糊处理)。

在代码中查找循环。即使很小的也可能产生这种错误,即使它看起来是良性的。