memory_limit auslesen

BugsBastard

Erfahrenes Mitglied
Hallo zusammen,

ich habe ein Skript im Intranet, welches das Memory_limit an den Rande der Belastbarkeit gebracht hat. Nachdem 2 GB nicht mehr ausgereicht haben, habe ich es dann optimiert. Dies habe ich geschafft, indem ich mehrdimensionale Arrays in eindimensionale Arrays umgeschrieben habe. Dadurch wurde der Speicher damals auf 200 MB reduziert.

Nun bekomme ich von dem Skript wieder Fehlermeldungen, daß der Speicher nicht ausreicht. Da wir immer mehr Daten verarbeiten, könnte es durchaus sein, daß die Daten zu viel werden (wir reden hier von mehreren Millionen Daten, aus denen Nachts etwas berechnet wird). Was mich wundert ist, daß es bei knapp 400 MB speicher abbricht, obwohl ich vorher mit ini_set den Speicher auf 2 GB hochgesetzt habe mit:
Code:
ini_set("memory_limit", -1);

Eigentlich sollte dadurch doch (laut meinem Verständnis) das Memory_limit auf 2 GB hochgesetzt werden, oder nicht? Ich könnte natürlich auch ini_set("memory_limit", "2048M") angeben, mir gehts darum, ob PHP evtl. in der Version 5.3.9 bei dem Wert "-1" nicht mehr den vollen Speicher freigibt. Daher würde ich gerne den maximal verbrauchbaren Speicher als Wert (nicht -1 sondern wirklich die Zahl, z.B. XXX Byte) auslesen. Gibt es sowas von PHP? Mit ini_get("memory_limit") erhalte ich nur -1 oder ähnliches.

Wenn jemand weitere Informationen zum Optimieren von Speicherauslastungen hat, oder weiß, ob PHP 5.X nur 400 MB (oder etwas anderes) freigibt, würde ich diesen natürlich auch bitten, sein Wissen mit mir zu teilen :).

Gruss und danke,

Bugs
 
Das hat nichts mit PHP sondern mit dem dir zur Verfügung stehenden Arbeitsspeicher zu tun. Wenn der nur 400 MB hergibt, dann kann PHP auch nicht mehr reservieren. Verwirrend ist die Speicherbelegung bei PHP aber immer, da stolper auch ich immer mal drüber. Du solltest dir eher Gedanken machen wie Du das Script optimieren könntest statt den Server noch mehr zu belasten.
 
Zurück