处理大型XML / CSV文件的PHP无法正常工作

时间:2016-06-24 12:00:15

标签: php xml

1)我有几个XML文件放在我服务器上的文件夹中。

我尝试在文件中获取XML:

$XML = simplexml_load_file('feeds/'.$feedfile);

适用于最大30-40 MB的XML文件,但对于100-200 MB或更大的XML文件则无效。

我试图在try-catch中调用simplexml_load_file,但是没有输出错误。

2)当我尝试爆炸大型CSV文件(180 MB)时会遇到类似的问题。

我尝试像这样爆炸CSV:

$products = explode("\n", $feedfileData);

知道为什么XML / CSV处理不起作用吗?

感谢。

我在看到How do I get a 50MB zip file with a 600MB xml file into a mysql datatable?

后尝试使用XMLReader

没有用。当我在大文件(185 MB)上使用XMLReader时,我只解析前800个节点,然后脚本就死了。

XMLReader适用于较小的文件。对于45 MB的XML文件,我能够解析文件中的所有节点(10,000+个节点)。

问题可能是记忆。在CSV / XML处理之上,我填充了包含来自数据库的大量数据的数组。

像这样:

$ currentProducts = $ wpdb-> get_results(" SELECT id,feedid,size,price FROM products WHERE shopid = 200");

如果我对此查询设置了限制(SELECT ... shopid = 200 LIMIT 5000),我可以从大的185 MB XML文件(30,000多个节点而不是仅约800个节点)解析更多节点。

我需要将Feed产品与$ currentProducts数组进行比较,所以我想现在的问题是:如何获取数组或类似数据来比较Feed产品与不占用所有内存?< / p>

感谢。

0 个答案:

没有答案