【问题标题】:zend_mm_heap error with simple_html_domsimple_html_dom 的 zend_mm_heap 错误
【发布时间】:2011-04-19 07:32:42
【问题描述】:

我正在尝试使用 simplehtmldom 解析 HTML 文件,但出现此错误:

zend_mm_heap corrupted

在一个 8231 行的 HTML 文件上执行大约 4 秒后。这可能是一个错误还是只是过多的内存使用?

【问题讨论】:

    标签: php parsing html-parsing


    【解决方案1】:

    我在simplehtmldom的SF主页上找到的:

    更改 simple_html_dom.php 中的 4 行代码(对我有用)

    // clean up memory due to php5 circular references memory leak...
    function clear()
    {
        unset($this->dom);
        unset($this->nodes);
        unset($this->parent);
        unset($this->children);
    }
    

    【讨论】:

    • 这里的解决方案更好,而且似乎是一个可靠的来源:sourceforge.net/p/simplehtmldom/patches/3
    • 太蹩脚了,他们仍然没有解决内存问题......我尝试了一切,直到我破坏了我的安装......我做了一个干净的格式,现在我刚刚找到了这个 xD @Ulflander,谢谢
    【解决方案2】:

    有一个bug 会影响大多数 PHP5.2 及更高版本,并且可以(尽管并不总是一致)影响任何使用大量对象的应用程序,尤其是当服务器负载很大时已加载;但确实会在 apache 日志中留下“zend_mm_heap 已损坏”消息。

    一种可能的解决方案是添加以下行: 导出 USE_ZEND_ALLOC=0 到 apache envvars 文件

    【讨论】:

    • 是的,消除了错误,但这是否意味着脚本使用了太多内存?我无法让 simplehtmldom 处理该文件。
    • 内存过多一般会触发内存不足错误;而且我认为如果就这么简单,PHP 开发团队现在就可以修复它了……但这似乎是当 PHP 非常快速地分配太多小块内存时触发的间歇性错误,并且使用的内存被许多物体碎片化
    • 我遇到了完全相同的问题,我尝试按照建议禁用 Zend 内存管理器。然而,这并没有帮助。使用 USE_ZEND_ALLOC=0 我不再收到“zend_mm_heap 已损坏”错误,而是 Apache 进程出现段错误。
    • 是的 - 这为我修复了 zend_mm_heap 损坏错误(PHP 5.3.3)。我现在在 apache 日志中输出 glibc 错误 - 但是 php 应用程序可以工作,所以现在是时候对我的新问题进行更多研究了......
    猜你喜欢
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2018-01-04
    • 2013-01-13
    • 1970-01-01
    • 2016-01-15
    • 2017-08-20
    相关资源
    最近更新 更多