Andreas Korthaus: Garbage Collection zur Script Laufzeit ?

Beitrag lesen

Hi!

das System ist voll Objektorientiert und modular aufgebaut. Es wird auch Seite für Seite erzeugt. Ich erzeuge die Dynamischen Seiten dabei sequentiell, puffere die Bildschirmausgabe und schreibe sie in Dateien.

Hm. Wie genau machst Du das?
Rufst Du nach jeder Datei ob_end_clean() auf?
Verwendest Du immer denselben Variablennamen für die Objekte?

Ich kann mir nicht vorstellen dass es an Referenzen liegt, udn es wird vermutlich nicht durch PHP5 behoben sein. An irgendeiner Stelle erzeugst Du immer neue Objekte, oder mehr Arrays, einen Array mit neuen Objekten oder schreibst immer mehr in den Ausgabepuffer... irgendsowas.

Sonst schreibe mal den Inhalt von $GLOBALS am Ende in eine Datei und guck wie groß die ist.

$fp = fopen ('globals.txt','w');
fwrite($fp,var_export($GLOBALS, TRUE));
fclose($fp);

Wenn die Datei riesig ist musst Du nur suchen wo da sinnlose Daten sind und dann das Script entsprechend ändern, wenn die Datei nicht besonders groß ist, würde ich auf den Ausgabe-Puffer tippen, vielleicht verwendest Du ob_clean(), was vielleicht irgendwelche Daten im Speicher lässt. Vielleicht versuche mal am Ende der Datei:

$i=0;
while (ob_end_clean()) {
  $i++;
}

$fp = fopen ('ob.txt','w');
fwrite($fp,$i);
fclose($fp);

Was steht dann in der ob.txt für eine Zahl?

Grüße
Andreas