Bug #79642 [Com]: xml_parse() fails with XML_ERROR_NO_MEMORY with a mere 17M file

From: Date: Fri, 21 Jan 2022 13:23:29 +0000
Subject: Bug #79642 [Com]: xml_parse() fails with XML_ERROR_NO_MEMORY with a mere 17M file
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-239171@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79642&edit=1 ID: 79642 Comment by: glint dot post2022 at gmail dot com Reported by: php4fan at gmail dot com Summary: xml_parse() fails with XML_ERROR_NO_MEMORY with a mere 17M file Status: Open Type: Bug Package: *XML functions Operating System: debian PHP Version: 7.2.31 Block user comment: N Private report: N New Comment: https://pluto-mart.net/atlas-brass-pepper-mill/ Previous Comments: ------------------------------------------------------------------------ [2020-05-27 16:51:01] cmb@php.net > why can't parse_xml() do it internally, by the way? Well, it could, but you'd still have to provide the full XML as string, what might be wasteful. In my opinion, xml_parse_stream() would be nice to have, but on the other hand, that can easily be written in userland as well. ------------------------------------------------------------------------ [2020-05-27 15:08:01] php4fan at gmail dot com > The problem might be that XML_PARSE_HUGE is not set; Yep, found out that's the problem. Been known for like three years at least, right? > unfortunately, it is currently not possible to pass that option > via xml_parser_set_option() or otherwise. Quite a disgrace. Yep, I worked around it by parsing in chunks. (why can't parse_xml() do it internally, by the way?) ------------------------------------------------------------------------ [2020-05-27 14:50:36] cmb@php.net The problem might be that XML_PARSE_HUGE is not set; unfortunately, it is currently not possible to pass that option via xml_parser_set_option() or otherwise. Anyway, it may be better to parse in chunks. ------------------------------------------------------------------------ [2020-05-27 14:07:29] sjon@php.net Can you share the xml file and the exact code you are using? I've tested the (chunked) example code on https://www.php.net/xml_parse using a 112M XML file and have no problems running it with a 128M memory_limit [1] http://www.ins.cwi.nl/projects/xmark/Assets/standard.gz ------------------------------------------------------------------------ [2020-05-27 13:05:39] php4fan at gmail dot com Description: ------------ I'm trying to parse an XML file that is about 17 MegaBytes in size with xml_parse(), and I get the XML_ERROR_NO_MEMORY error. Even increasing the memory limit to 8 GB. I can understand a little bit of overhead, but there's no way using several GB of memory, to decode an XML that is just 17MB in its string form, can be justified. ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=79642&edit=1

« previous php.bugs (#239171) next »