PHP memory usage messen

Kommentieren Nov 02 2010

 

Man lernt ja nie aus.

Die allgemeine “Lösung” des folgenden Fehlers:

PHP Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate … bytes) in …


ist einfach das memory limit hoch zu setzten.

Dies löst aber das Problem nicht. Es umgeht dieses nur.

Damit es zu so einem Fehler nicht erst kommt, muss man eine Möglichkeit haben den Wert des Arbeitspeicherverbrauchs zu messen. Nun bin ich über eine Lösung gestolpert mit der PHP es möglich macht diesen Wert auszulesen.

Frühzeitig Memory Limit Probleme entdecken

Vorausschauendes oder defensives Programmieren wird häufig vernachlässigt. Man geht allzu häufig davon aus, dass die Umgebung immer die selbe ist und wenn es einmal funktioniert, dann funktioniert es immer. Zum defensiven Programmieren gehört aber nicht nur, alle möglichen Fälle von Parametern abzufangen die jemand in eine Methode reinstopfen könnte, sondern auch die Prüfung der Webservereigenschaften. Denn wer weiß, ob das Projekt in einigen Monaten oder Jahren nicht auf einen anderen Webserver (z.B. IIS -> Apache) umgezogen wird, oder bei der Installation einer neuen PHP-Version vergessen wurde, die php.ini korrekt anzupassen.



Damit sollte man zumindest gewarnt werden, wenn es eng wird.
Natürlich ist das keine perfekte Lösung und eine allgemeine Überwachung des Servers wird damit nicht ersetzt, aber es können unangenehme Fehler erkannt und behoben werden.