将大XML文件加载到mySQL数据库(PHP)

将大XML文件加载到mySQL数据库(PHP),php,xml,large-files,match,Php,Xml,Large Files,Match,对于一个新项目,我需要将大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 li

对于一个新项目,我需要将大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
有没有一个简单的解决办法?这是不可能得到te饲料在几个MB的每一部分

多谢各位

顺便问一下,有人有没有办法轻松匹配xml提要?

这应该可以解决这个问题:

ini_set('memory_limit', -1);

将ini_集(“内存限制”,“150MB”)添加到脚本中。

如果必须解析大xml文件(或一般的大文件),编写基于流的函数比同时将所有内容都放在内存中的函数更好。PHP有一个名为的类,它允许您一次扫描一个文件,一个节点。更改代码以使用它可能不是微不足道的,但您可能会考虑进行更改。

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

我刚才写了一篇关于这一点的文章。解决方案是使用XMLReader将XML块读入一个对象,然后对其进行处理。

向我们展示导入数据的代码。也许使用“unset()”可以减少内存量!谢谢,这不会使服务器崩溃吧?一开始,它将在共享服务器上运行。这不会破坏它,但安全模式必须关闭。哈哈,我不确定系统管理员会喜欢它。@tofutim:我肯定他不会介意,因为有简单的方法可以阻止它。