memory_limit in PHP – Man lernt nie aus

Für PHP und Skriptsprachen im Allgemeinen gelten im Regelfall Beschränkungen was die maximale Zeit für die Ausführung eines Skriptes und den allokierbaren Speicher betreffen.

Beispielsweise kann über die PHP.INI auf einem Webserver der Eintrag des memory_limit gesetzt werden. Beispielsweise bedeutet memory_limit = „20M“, dass PHP für das Skript 20 MB des RAM des Servers zur Verfügung stellt. (Der Wert ist rein fiktiv und dient hier nur zur Verdeutlichung.) Da PHP selbst aber auch etwas RAM benötigt und aus technischen Gründen nie das volle Limit zur Verfügung stellen kann, kann ein Skript laut PHP die 20 MB schon erreicht haben, obwohl es „real“ nur ca. 19 MB waren. Klingt eigentlich soweit logisch. 😉

Dadurch erreicht man aber immer etwas früher das gesetzte Limit, was vielleicht bei einem umfassenden Importskript zum Abbruch führt, weil die entscheidenden letzten 100 KB fehlen.

Viele Webhosting-Anbieter begrenzen in Ihren Shared-Hosting Tarifen auch den RAM. Es ist daher bei einem Tarif, der 20 MB RAM zur Verfügung stellt evtl. sinnvoll, per PHP.INI nicht diese 20 MB zu verwenden, sondern, aus oben genanntem Verhalten, einfach 25 MB zu setzen, damit PHP wirklich das Maximum, das der Webhosting-Anbieter zur Verfügung stellt, ausnutzen kann.
Zu beachten ist hierbei, dass PHP in Bytes rechnet und die beispielhaften 20 MB daher 20.480 KB bzw. 20.971.520 Bytes entsprechen. Nutzt der Anbieter für seine Limitangabe aber eine andere Umrechnung wie z.B. mit 1.000, dann stehen auch nur 20.000 KB bzw. 20.000.000 Bytes zur Verfügung.

Da das memory_limit mit integer-Werten arbeitet, ist es auch möglich, kein Limit zu verwenden (seit PHP 5.1): memory_limit = „-1“
Dies ist jedoch nicht unbedingt zu empfehlen, denn sollten Sie einmal einen Tarif wechseln oder auf einen anderen Anbieter/Server umziehen und das Skript ist nicht sauber programmiert, so können schnelle mehrere Hundert MB oder gar GB dadurch belegt werden.

Vielleicht hilft der Hinweis, das memory_limit für PHP – trotz Beschränkung seitens des Hosting-Anbieters – etwas höher zu setzen, dem einen oder anderen Anwender, der damit den Tarifwechsel in einen höheren Tarif bei seinem Hosting-Anbieter etwas hinauszögern kann. Ob diese mich dafür jetzt weniger mögen hassen?


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert