Andreas Korthaus: Garbage Collection zur Script Laufzeit ?

Beitrag lesen

Hallo!

Vielen Dank für die Antworten erstmal, ich weiss jetzt wo ich suchen muss. Der durchschlagende Erfolg blieb mir zwar noch versagt, aber ich muss wohl das System auf Speicherfresser durchforsten. Da rächt sich, wenn man sich unter PHP noch nie Gedanken drüber gemacht hat.
Noch eine Frage, gibt es für PHP Werkzeuge, mit denen man untersuchen kann, welche Objekte wieviel Speicher verwenden ?

Es kommt sehr auf den Quellcode an. Du solltest möglichst modular vorgehen, das heißt entsprechende Methoden/Objekte verwenden, und dabei nicht alles auf einmal machen. Wenn Du sagst Du generierst eine Webseite, drängt sich mir die Vermutung auf dass Du alle Elemente der Webseite erst im Speicher erzeugst, und am Ende auf die Platte schreibst. Du solltest nach Möglichkeit besser sequentiell vorgehen, das heißt wenn möglich Datei für Datei erzeugen und direkt auf die Platte schreiben, und dann die Resourcen freigeben, indem Du dieselben Variablen... verwendest, z.B. in einer Schleife (in dem Fall werden die nicht mehr benötigten Resourcen bei jedem Schleifendurchlauf freigegeben).
Dann übergebe gerade Objekte und große Arrays nach Möglichkeit immer als Referenz, wie gesagt.
Du solltest den von mir verlinkten Artikel genau lesen und verstehen, und dann Dein Script entsprechend umbauen indem Du das "Reference-Counting" und Aliase?!(Referenzen -> http://de3.php.net/manual/en/language.references.php) ausnutzt.

In gewissen Grenzen können Dir die Funktion http://de3.php.net/memory-get-usage und die Extension http://xdebug.org/ helfen speicherintensive Bereiche und Funktionen zu finden.

Grüße
Andreas