我需要解析一个巨大的数据源(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的内存限制。