PHP使用XMLReader处理庞大的数据源


PHP working with XMLReader with HUGE data source

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

我在使用XMLReader时遇到问题。我以前除了SimpleXML什么都不需要,但考虑到我真的无法将这个庞然大物加载到内存中,我需要通过流来完成这项工作。

我写了这个代码:

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

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

但我在执行方面有问题。也就是说,我得到"致命错误:超过30秒的最大执行时间…"

当我设置time_limit(600)时,浏览器就会崩溃。

它正在崩溃,因为它无法处理创建的"."的数目?

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

它正在崩溃,因为它无法处理创建的"."的数目?

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

最终看一下:

  • 在PHP中解析庞大的XML文件
  • 用PHP处理大型XML的最佳方法
  • 如何使用PHP顺序解析大型XML文件

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