我编写了一个使用XMLReader在PHP中解析大型XML文件的应用程序。
通常情况下,当我尝试读取大于2gb的文件时,应用程序效果很好, EXCEPT 。
(我还没弄清楚截止的确切位置;它在500mb文件上完美运行,但在我拥有的下一个最大文件--2.5gb上失败了。)
具体来说,如果我的代码如下所示:
$reader = new XMLReader();
if ($reader->open("big.xml")) {
echo "Success!";
$reader->close();
} else {
echo "Failed!";
}
如果我测试大(> 2gb)文件 - 我得到了这个:
Warning: XMLReader::open() [xmlreader.open]: Unable to open source data in [php script]
当然,输出Failed!
。
如果我尝试使用较小的(500mb)文件 - 我只获得Succcess!
输出。
据我所知 - 无法打开的大文件和可以打开的中等大小文件(例如权限,有效的XML,编码) EXCEPT 文件的大小。
虽然文件的大小很大 - 节点都很小,所以我不认为任何单个节点会导致内存问题。
答案 0 :(得分:1)
PHP可能内存不足。尝试:
ini_set('memory_limit','256M');