我面临常见的“致命错误:内存不足(分配 30408704)(试图分配 24 个字节)......”PHP 致命错误。通过 Apache 提供的页面没有表现出这种行为。
我尝试了以下方法:
- 将 php.ini 中的 memory_limit 增加到更大的值。
- 通过调用
ini_set('memory_limit', -1)
,ini_set('memory_limit', '-1')
,ini_set('memory_limit', 100000000)
,ini_set('memory_limit', '128M')
等来增加脚本本身的 memory_limit。 unset()
ing 不需要的数组和对象,以鼓励垃圾收集器释放内存。- 联系网络主机。他们通常非常有能力和知识渊博,但也无法帮助我解决这个问题。
- 我已经尝试使用
-c
命令行标志明确包含一个 php.ini 文件,以手动选择具有各种值的特定 php.ini 文件。 - 我尝试使用原始字节数和值(例如 64M、128M 等)在 php.ini 中设置 memory_limit。
- 托管服务提供商能够以 root 身份运行脚本而没有任何问题,但在使用非 root 用户运行脚本时遇到了同样的问题。也许涉及某种权限问题?
无论我尝试什么,错误消息都是一样的。看来我的命令行脚本忽略了对memory_limit
.
我倾向于尝试确保我的脚本具有内存效率,但我目前需要通过简单的 HTML DOM解析大量的 HTML,并且在解析器中我遇到了内存不足的问题。为了减少脚本的内存占用,我尝试使用DOMDocument代替。这也无济于事。事实上,内存不足错误现在在脚本的其他地方触发。
我的问题:有没有人遇到过这个或类似的问题?你有什么建议?
谢谢你。