Это очень похожий вопрос на Лучший способ обработки больших XML в PHP , но с очень хорошим конкретным ответом, направленным на устранение конкретной проблемы разбора каталога DMOZ. Однако, поскольку это хороший хит Google для больших XML-файлов в целом, я также отправлю ответ на другой вопрос:
. Я беру его на себя:
https : //github.com/prewk/XmlStreamer
Простой класс, который будет извлекать всех детей в корневой элемент XML при потоковой передаче файла. Протестировано на 108 MB XML-файле из pubmed.com.
class SimpleXmlStreamer extends XmlStreamer {
public function processNode($xmlString, $elementName, $nodeIndex) {
$xml = simplexml_load_string($xmlString);
// Do something with your SimpleXML object
return true;
}
}
$streamer = new SimpleXmlStreamer("myLargeXmlFile.xml");
$streamer->parse();