我需要解析一个巨大的数据源(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文件放入关系数据库中。在进入模式细节之前,我正在测试可行性。
答案 0 :(得分:1)
崩溃是因为它无法处理“。”的数量。产生的?
要测试此功能,只需在没有echo '.';
的情况下进行测试
因为你需要大量的RAM来增加脚本可以使用的最大内存。
最终将XML文件拆分为较小的部分并按顺序处理它们。
最终看看:
答案 1 :(得分:0)
您还应该扩展PHP的内存限制。