Tom: arbeitsspeicher auf webserver

Beitrag lesen

Hello,

[...] aber was davon frisst php? das meiste? wuerde das bedeuten, dass das gleiche skript auf einem webserver, wenn es von 20 leuten gleichzeitig aufgerufen wird, die 8-MB-grenze ausreizen wuerde?

Wenn PHP als Modul geladen ist, bezeichnet diese Grenze den maximalen Speicherplatz pro Sub-Prozess. Wenn also ein Besucher die Seite "betritt", und der Webserver stellt fest, dass er parsen soll, dann erzeugt er eine Instanz des PHP-Interpreters, lädt das Script und führt es aus. Hierfür hat er dann z.B. 8MB zur Verfügung.

Interessant wäre es hier, wie die Verwendung von "Heap" und "Stack" verwaltet werden.
Funktionen werden üblicherweise auf dem Stack ausgeführt und nach Abarbeitung wieder beseitigt. Da PHP-Funktionen während der Laufzeit dynamisch gebunden werden, benötigen sie also auch immer nur zur Laufzeit Speicherplatz. Es wird also erst dann eine Instanz der Funktion gebildet, wenn sie benötigt wird. Dauerhaft Platz benötigt also nur der Funktionskopf nebst Parametern, denn der steht in Deinem eigenen Script.

Wenn Du nun viel mit vorbereiteten Klassen arbeitest, gehören diese (deren Prototyp) also auch zum eigenen Speicherverbrauch. Es ist daher immer günstiger, fertige PHP-Funktionen zu verwenden, als alles selber neu zu erfinden.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau