2010-05-05 131 views
0

我用PHP解析XML文件并将行插入MYSQL数据库。PHP + MYSQL服务器配置

我正在使用PHP simplexml_load_files加载XML和一个foreach循环访问数组,并将行插入到我的数据库中。

它可以很好地处理我正在测试的小文件,但实际上我需要解析一个大型的500MB XML文件并且什么也没有发生。

我想知道什么是这种情况下正确的Php.ini配置?

我有一个VPS Linux Cent OS,256 MB的专用内存和MYSQL 5.0.5。我也设置了php memory_limit = 256M(我的服务器的最大值)

回答

0

gosh,一个500 MB的XML文件?我猜你用完了内存。尝试XMLReader,这是一个拉解析器(逐行解析XML(或多或少)),以便您不会如此轻松地耗尽内存。

+0

是的,它可能会工作,但需要重新写我的代码..有没有机会使用simplexml_load_file大文件? – Matias 2010-05-05 09:57:58

+0

SimpleXML(如DOMDocument)将XML解析为一个整体,并且必须创建一个DOM树。这很容易需要超过100倍的内存文件大小。 – Dormilich 2010-05-05 13:04:42

0

我建议你使用xmlreader ...它更efective内存是用于XML关注

0

内存配置位于第三方库,而不是在php.ini中配置。 除此之外,您应该使用XMLReader或ext/xml来处理这样一个大文件,这意味着流式访问而不使用dom数据访问(SimpleXML)。