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>
感谢。