【问题标题】:xml_parse huge file PHPxml_parse 大文件 PHP
【发布时间】:2015-11-21 11:02:54
【问题描述】:

我对 PHP 函数 xml_parse 有疑问。它不适用于大文件 - 我有 10MB 大小的 xml 文件。

问题是,我有 Zend 的旧 XML-RPC 库,还有其他功能(元素处理程序和大小写折叠)。

$parser_resource = xml_parser_create('utf-8');

xml_parser_set_option($parser_resource, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($parser_resource, 'XML_RPC_se', 'XML_RPC_ee');
xml_set_character_data_handler($parser_resource, 'XML_RPC_cd');
if (!xml_parse($parser_resource, $data, 1)) {
    // ends here with 10MB file    
}

在另一个地方,我只是使用带有选项 LIBXML_PARSEHUGE 的 siple_load_xml_file,但在这种情况下我不知道该怎么办。

最好的方法是,如果函数 xml_parse 也有一些用于大文件的参数。

感谢您的建议

错误是: XML 错误:行中没有内存...

【问题讨论】:

  • 您在运行命令时查看过内存消耗吗?也许你的内存用完了?
  • 我将尝试使用 256MB 的 ini_set,但仍然出现错误。我看到有一个 8MB 的元素 - 如果它意味着什么。

标签: php xml-parsing


【解决方案1】:

要解析的文件块长度可能很大。

如果你使用 fread

while ($data = fread($fp, 1024*1024)) {...}

使用较小的长度(在我的情况下它必须小于 10 MB),例如1MB 并将 xml_parse 函数放在 while 循环中。

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 2015-04-08
    • 2018-03-12
    • 1970-01-01
    • 2012-07-20
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    相关资源
    最近更新 更多