对于新项目,我需要将大型XML文件(200MB +)加载到mySQL数据库。我需要与之匹配的+ - 20个Feed(并非所有字段都相同)。
现在,当我想要捕获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。
非常感谢!
P.S。有人有想法匹配xml-feeds吗?
答案 0 :(得分:2)
如果你必须解析大的xml文件(或者一般的大文件),那么写一个基于流的函数比一个需要同时在内存中的一个更好的策略。 PHP有一个名为XmlReader的类,它允许您一次扫描一个文件,一个节点。更改代码以使用它可能并非易事,但您可以考虑进行更改。
答案 1 :(得分:1)
这应该解决它:
ini_set('memory_limit', -1);
答案 2 :(得分:1)
我刚才写了一篇blog entry。解决方案是使用XMLReader将XML块读取到对象中然后用它做事。
答案 3 :(得分:0)
将ini_set('memory_limit','150MB')添加到您的脚本中。
答案 4 :(得分:0)
PHP是唯一可以考虑用于工作的编程语言吗?如果您使用Java,那么有更多更有效的方法来加载XML ..