php讀xml巨慢(大資料量)
我用php讀取商家的商品API,xml格式的,用的函數式getxmldata()這個函數,但是由於資料太大,已耗用時間常常逾時。有沒有什麼好的辦法讀這種大的xml?有沒有一部分一部分讀的方法?具體一點,剩的分都給了。先謝謝大仙們了~
分享到:
------解決方案--------------------
嗯,SimpleXML、DOMDocument 都是一次性載入 xml 到記憶體
如果檔案較大,可考慮使用 XML 文法解析函數
比如手冊中的例子
$file = "data.xml";
$depth = array();
function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
echo " ";
}
echo "$name\n";
$depth[$parser]++;
}
function endElement($parser, $name)
{
global $depth;
$depth[$parser]--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);