Moin!
So könnte man abschätzen, wie groß die Datei auf der Platte sein dürfte, um sie noch zu öffnen, ohne den verfügbaren Speicher zu überschreiten.
Sehr gewagt. Beim XML-Parsen würde ich als erste Orientierung annehmen, dass der Speicherbedarf mindestens doppelt so groß ist wie die Dateigröße der XML-Datei.
Faktor 2 mit PHP und SimpleXML? Ich würde eher Faktor 10 bis 20 annehmen wollen.
PHP verbraucht relativ viel Overhead für das Verwalten von Variablen, also zusätzlich zu den reinen Nutzdaten. Das fällt umso stärker ins Gewicht, je geringer die Nutzdaten pro Variable im einzelnen sind. Für das Speichern eines einzelnen Bytes (Zeichen) fällt die gleiche Menge an Verwaltungsinformation an, wie für das Speichern einer Variablen mit 5 Megabyte.
Eine XML-Datei in ein DOM zu parsen erzeugt jede Menge Variablen. Die ihrerseits in Objekten stecken. Die wieder den Verwaltungsoverhead steigern.
Wenn man Speicherplatzprobleme bekommt, weil man bislang keine Optimierung in dieser Hinsicht vorgenommen hat (durchaus ein legitimer Ansatz, denn jede Optimierung ist ein Aufwand, der durch irgendeine Anforderung gerechtfertigt sein muss), ist es natürlich relevant, sich durch Messungen erstmal einen Überblick zu verschaffen, um dadurch überhaupt Ansätze für Optimierungen zu ermitteln.
Das Erhöhen des zugewiesenen Speichers für PHP dürfte dabei allerdings die einfachste Methode sein, kurzfristig zu einer Lösung zu kommen. :)
- Sven Rautenberg