dedlfix: PHP Speicher Behandlung

Beitrag lesen

Tach!

Local ist bei mir ein Xampp unter Windows installiert (PHP 5.3.5). Online läuft PHP 5.3.18 als CGI-Dings unter Linux. Am Anfang des Scriptes wird online doppelt so viel Speicher belegt als offline. Am Ende des Scriptes ist es sogar 10 mal mehr. Die Daten, die geladen und behandelt werden, sind ungefähr die gleichen (Datenbank Synchronisation von online nach offline).

Du vergleichst nicht nur zwei unterschiedliche PHP-Versionen (auch wenn die Unterschiede vielleicht nicht so groß sind), sondern auch noch unter zwei Betriebssystemen. Da gibt es durchaus Unterschiede in der Speicherverwaltung. Und sei es nur, dass das eine ein 32-Bit- und das andere ein 64-Bit-System ist.

Meine Vermutung ist, dass irgendein Apache Plugin da enorm Speicher belegt.

Die interessieren bei (F)CGI nicht. Außerdem ist PHP nur _ein_ Apache-Modul. Und obendrein liefert memory_get_usage() nur den Verbrauch deines Scripts.

Gibt es vielleicht eine Funktion die den Speicher säubert?

die() und exit() :-)

Gelegentlich auch diverse close- oder free_result-Funktionen.

Gibt es gute Tipps und Tricks Speicher schonend zu programmieren?

SELECT COUNT(*) statt SELECT * mit mysql_num_rows(). Jedes mysql(i)_query() lädt im Hintergrund bereits alle Datensätze in den Client.

dedlfix.