PHP使用带有HUGE数据源的XMLReader

时间:2013-02-11 22:43:07

标签: php xml xmlreader

我需要解析一个巨大的数据源(14.9万行XML,1.7GB)。

我在使用XMLReader时遇到了问题。我之前不需要任何东西,只有SimpleXML,但鉴于我真的无法将这个庞大的内容加载到内存中,我需要通过流来完成。

我写了这段代码:

<?php

$xml = new XMLReader(); 
$xml->open('public.xml'); 


while($xml->read())
{
    echo '.';
}
$xml->close();
?>

但我遇到执行问题。也就是说,我得到“致命错误:超过30秒的最长执行时间......”

当我执行set_time_limit(600)时,浏览器就会崩溃。

崩溃是因为它无法处理“。”的数量。产生的?

你在这里推荐什么?最终,我需要将这个XML文件放入关系数据库中。在进入模式细节之前,我正在测试可行性。

2 个答案:

答案 0 :(得分:1)

  

崩溃是因为它无法处理“。”的数量。产生的?

要测试此功能,只需在没有echo '.';的情况下进行测试 因为你需要大量的RAM来增加脚本可以使用的最大内存。 最终将XML文件拆分为较小的部分并按顺序处理它们。

最终看看:

答案 1 :(得分:0)

您还应该扩展PHP的内存限制。