2

对于一个新项目,我需要将大型 XML 文件 (200MB+) 加载到 mySQL 数据库。我需要匹配 +- 20 个提要(并非所有字段都相同)。

现在,当我想捕获 XML 时,我得到了这个错误:

Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 171296569 bytes) in E:\UsbWebserver\Root\****\application\libraries\MY_xml.php on line 21

有一个简单的解决方案吗?不可能以每几 MB 的一部分获得 te 提要。

非常感谢你!

Ps 有人想轻松匹配 xml-feeds 吗?

4

5 回答 5

2

如果您必须解析大 xml 文件(或一般的大文件),那么编写基于流的函数比要求所有内容同时在内存中的函数更好。PHP 有一个名为XmlReader的类,它允许您一次扫描一个文件,一个节点。更改代码以使用它可能并非易事,但您可能会考虑进行更改。

于 2009-10-31T14:17:34.137 回答
1

这应该解决它:

ini_set('memory_limit', -1);
于 2009-10-31T13:02:43.657 回答
1

不久前,我写了一篇关于此的博客文章。解决方案是使用 XMLReader 将 XML 块读入一个对象,然后用它做事。

于 2011-05-26T06:32:55.290 回答
0

将 ini_set('memory_limit', '150MB') 添加到您的脚本中。

于 2009-10-31T13:04:21.540 回答
0

PHP 是你会考虑的唯一编程语言吗?如果您使用 Java,那么还有更多更有效的方式来加载 XML。

于 2009-11-01T00:31:34.760 回答