Speicherprobleme: foreach und simplexml

Speicherprobleme: foreach und simplexml

am 21.09.2006 16:36:27 von Nicolai Scheer

Hallo zusammen!

Folgender Code bereitet mir momentan Kopfschmerzen:

$xmldata =3D null;

for ( $i =3D 0; $i < 100000; $i++ )
{
$xmldata =3D simplexml_load_file( "xmltest.xml" );

foreach ( $xmldata->datensatz as $dataset )
{
# ich mach nix...
}

$xmldata =3D null;
}

Folgendes xml liegt zugrunde:




Inhalt1
Inhalt2
Inhalt3

[ ... weitere Datensätze ]


Das Ganze läuft mit php5.1.5 auf der Kommandozeile unter einem Windows
XPSP2.
SimpleXML lädt die Datei in den Speicher und mit $xmldata =3D null helf=
e
ich dem GC etwas nach. Soweit so gut. Das durchlaufen der Elemente
mittels foreach frisst jedoch enorm viel Speicher.
Ohne das Durchlaufen der Elemente schwankt der Speicherverlauf zwar
durch das Laden und wieder freigeben, bleibt aber in einem gewissen
Rahmen konstant.

Kann mir jemand sagen, wie ich gegen dieses Problem ankämpfen kann?
Ich würde gerne explizit Speicher freigeben, es erscheint mit allerding=
s
schon schleierhaft wieso das foreach-iterieren soviel zusätzlichen
Speicher alloziiert, und vor allem diesen scheinbar nicht mehr freigibt..=


Irgendwelche Ideen?

Danke!

Grüße,

Nico

Re: Speicherprobleme: foreach und simplexml

am 21.09.2006 18:06:58 von Ulf Kadner

Nicolai Scheer wrote:

> Folgender Code bereitet mir momentan Kopfschmerzen:
>
> $xmldata = null;
> for ( $i = 0; $i < 100000; $i++ ) {
> $xmldata = simplexml_load_file( "xmltest.xml" );
> foreach ( $xmldata->datensatz as $dataset ) {
> # ich mach nix...
> }
> $xmldata = null;
> }
>
> Das Ganze läuft mit php5.1.5 auf der Kommandozeile unter einem Windows
> XPSP2.
> SimpleXML lädt die Datei in den Speicher und mit $xmldata = null helfe
> ich dem GC etwas nach. Soweit so gut. Das durchlaufen der Elemente
> mittels foreach frisst jedoch enorm viel Speicher.

Das sieht nach einem Bug aus (hatte ich auch vor nem Monat aber 5.1.6
ist wieder OK):
http://bugs.php.net/bug.php?id=38604

MfG, Ulf

Re: Speicherprobleme: foreach und simplexml

am 21.09.2006 18:10:28 von Ulf Kadner

Ulf Kadner wrote:

> Das sieht nach einem Bug aus (hatte ich auch vor nem Monat aber 5.1.6
> ist wieder OK):
> http://bugs.php.net/bug.php?id=38604

Ob der unter Windows auch gefixt ist weis ich allerdings nicht. Linux
ist aber OK!

MfG, Ulf

Re: Speicherprobleme: foreach und simplexml

am 21.09.2006 23:32:23 von Nicolai Scheer

Hi!

Ulf Kadner schrieb:
>> http://bugs.php.net/bug.php?id=3D38604
> Ob der unter Windows auch gefixt ist weis ich allerdings nicht. Linux
> ist aber OK!

Danke für die Info!
Mit 5.1.6 ist das Verhalten leider das Gleiche.
Ist ziemlich fies, da ich zwar nur kleine, aber dafür sehr viele Dateie=
n
verarbeite.

Ich würde eigentlich gerne den XMLReader benutzten, der kann soweit ich=

es gesehen habe aber noch nicht gegen xml-Schemata validieren...

Gruß,

Nico