我尝试使用PHP XMLReader继续处理大型xml文件(大约1.5 GB)和大约300万个项目。 但是脚本在2,3到2,600万个项目之间随机停止而没有错误。
没有时间或内存限制。
set_time_limit(0);
ini_set('max_execution_time', 0);
ini_set('memory_limit', -1);
error_reporting(E_ALL);
这是代码:
$Reader = new XMLReader();
$Reader->open('file.xml', NULL, LIBXML_PARSEHUGE);
$count = 0;
while ($Reader->read()) {
if ($Reader->nodeType == XMLReader::ELEMENT && $Reader->name == 'file') {
$outerXml = $Reader->readOuterXml();
$count ++;
echo $count . "\r\n";
}
}
echo 'end';
XMLReader似乎有某种限制。我已经尝试过LIBXML_PARSEHUGE选项,但没有成功。
有人有想法吗?
谢谢!
更新: 通过SSH,http curl似乎有问题,即使设置了--max-time选项。 它直接通过PHP解析器运行时可以使用。