Bug #79642 [Com]: xml_parse() fails with XML_ERROR_NO_MEMORY with a mere 17M file
| From: | glint dot post2022 at gmail dot com | Date: | Sat, 22 Jan 2022 14:04:37 +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-239218@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/heartfelt-memory-lamps/
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