13 MB XML-File --> PHP-Array

Hallo!

Ich habe ein XML-File mit einer Dateigröße von etwas über 13 MB, dieses XML-File würde ich jetzt gerne mit PHP einlesen damit ich es später grafisch aufbereitet ausgeben kann.

Mein Ansatz wäre gewesen das ganze über SimpleXML zu machen. Mein Problem ist nur dass das mit kleineren Dateien funktioniert bei den 13 MB (obwohl das imho für ein XML-File noch nicht groß ist) kommt aber die Fehlermeldung:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 77 bytes)



Auf einem zweiten Server kommt gar keine Fehlermeldung, da bleibt es einfach weiß.


Habt ihr Ideen wie ich das XML-File "bearbeiten" kann damit daraus eine schöne Ausgabe zB in Baumdarstellung herauskommt?

lg
http://php.net/manual/en/book.simplexml.php
 
Zuletzt bearbeitet:
Setze in der php.ini den Wert für memory_limit einfach höher.
 
Pff, fast jeder Webserver hat HTTPS aktiviert, was wesentlich anfälliger für DoS ist als ein vergrößerter PHP-Buffer. Davon abgesehen ist die DoS-Anfälligkeit wesentlich eher abhängig von der MaxClients-Einstellung des Webservers.
 
Auf dem einen Server habe ich keinen Zugriff auf die php.ini, auf dem anderen (dort wo es weiß geblieben ist) habe ich das memory-limit erhöht gehabt.

Habe jetzt das ganze mit SimpleXML neu programmiert, die vorgefertigten Funktionen aus dem PHP Manuel waren wohl sehr speicherlastig :rolleyes: Jetzt geht das extrem schnell ...
 
http://de.wikipedia.org/wiki/Simple_API_for_XML

Diese API liest die XML Dokumente sequientell. Sie werden nicht - wie bei DOM - erst vollständig in den Speicher geladen.
Bei Dokumenten in deiner Größenordnung, sind SAX Parser das Mittel zum Zweck.

Kann ich nur bestätigen!
Für ein Projekt an der Uni arbeiten wir mit OpenStreetMap XML Dateien (mehrere Gigabyte groß). Mit einem SAX Parser geht das wirklich verdammt schnell.

DOM Parser machen eigentlich nur wirklich Sinn wenn man die Daten auch verändern will um sie hinterher wieder zurück in eine XML Datei zu schreiben.
 
Zurück
Oben