0

我需要解析一个巨大的数据源(1490 万行 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 文件导入到关系数据库中。在深入了解模式的细节之前,我正在测试可行性。

4

2 回答 2

1

它正在崩溃,因为它无法处理“。”的数量。创建?

要对此进行测试,只需尝试不使用echo '.';.
由于您需要大量 RAM 来增加脚本可以使用的最大内存。最终将 XML 文件拆分为更小的部分并按顺序处理它们。

最后看看:

于 2013-02-11T22:57:27.180 回答
0

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

于 2013-02-11T22:46:21.997 回答