Jede Anwendung, die auf der Skriptsprache PHP entwickelt wurde, nutzt das vom Webserver zur Verfügung gestellte PHP Memory Limit, um die Logik des PHP-Skripts abzuarbeiten. Wie genau das funktioniert und wofür die Speichergrenze dient, erklären wir Ihnen ausführlich in diesem Artikel. Da es vorkommen kann, dass die Standardkonfiguration des Webhosters nicht ausreicht, zeigen wir Ihnen auch, wie Sie im Handumdrehen das PHP Memory Limit für Ihre gehostete Website erhöhen können. Da jeder Webhoster ein maximales PHP Memory Limit für seine Hosting-Produkte definiert, welches nicht überschritten werden kann, erhalten Sie von uns eine Übersicht mit den Webhostern und ihren Memory-Limits. Dadurch sind Sie in der Lage, von Anfang an den passenden Webhoster für Ihre Website zu wählen.
Was ist PHP und wie arbeitet die Skriptsprache?
PHP steht für Hypertext Preprocessor und ist eine weitverbreitete Open-Source-Skriptsprache. Sie kommt besonders bei Webanwendungen zum Einsatz. Die Skriptsprache ist plattformunabhängig und somit auf jedem Betriebssystem wie z. B. Windows, Linux, Unix oder macOS lauffähig. Für dynamische Anwendungen können sowohl relationale als auch nicht-relationale Datenbanken problemlos und schnell angebunden werden. Die Kommunikation über Protokolle wie HTTP, LDAP, POP3, IMAP, SNMP und COM wird ebenfalls unterstützt. Ein großer Vorteil von PHP ist die leichte Erlernbarkeit, die auch durch eine exzellente PHP-Online-Dokumentation unterstützt wird.
Für die Verarbeitung eines PHP-Skripts benötigen Sie lediglich auf der Client-Seite einen Browser, über den Sie die Website aufrufen. Serverseitig ist ein Interpreter notwendig, der den angefragten Aufruf der Website verarbeitet. Um die genaue Arbeitsweise von PHP verstehen zu können, möchten wir die einzelnen Schritte beginnend vom Website-Aufruf über die Verarbeitung der PHP-Datei bis hin zur Anzeige des Ergebnisses in Ihrem Browser durchgehen.
Beim Aufruf einer Website im Browser wird eine Anfrage, auch kurz Request genannt, an den Webserver gestellt. Der Webserver, auf dem die PHP-Software installiert ist, übernimmt diesen Request und ermittelt die gewünschte .php Datei. Diese Datei wird an den PHP-Interpreter gesendet, der entsprechend der Konfiguration durch das PHP Memory Limit einen Teil des Arbeitsspeichers reserviert. Der reservierte Speicher wird dann durch den Interpreter genutzt, um das Skript Zeile für Zeile abzuarbeiten. Dabei wird das Ergebnis des PHP-Codes, welches z. B. aus einem Datensatz basierend auf einer Datenbankabfrage besteht, als HTML zurückgegeben. Nach der Verarbeitung des gesamten PHP-Skripts erhält der Webserver eine komplett auf HTML basierende Datei, die an den Browser als Antwort, auch Response genannt, weitergeleitet wird.
Was ist das PHP Memory Limit und wofür wird es genutzt?
Um PHP-Skripte abzuarbeiten, wird ein Teil des Arbeitsspeichers reserviert. Die Größe dieses reservierten Arbeitsspeichers wird durch das PHP Memory Limit definiert. Dabei bezieht sich die Speicherangabe auf den maximal nutzbaren Arbeitsspeicher pro Skriptaufruf. Wenn also ein Limit von 128 MB auf dem Webserver eingerichtet wurde, kann jedes PHP-Skript bis zu 128 MB für die Ausführung des Skripts nutzen. Sollten fünf Skripte gleichzeitig ausgeführt werden, so wird dementsprechend 640 MB (5 PHP-Skripte x 128 MB PHP Memory Limit) an Arbeitsspeicher reserviert.
Das PHP Memory Limit schützt davor, dass schlechte oder fehlerhaft programmierte PHP-Skripte unkontrolliert den gesamten zur Verfügung stehenden Arbeitsspeicher ausnutzen und somit die Performance des Webservers beeinträchtigen. Es gibt viele Ursachen, die zur Ausnutzung des kompletten Memory Limits führen können. So kann z. B. eine Endlosschleife eines selbst entwickelten PHP-Skripts oder die Installation eines neuen WordPress-Plugins die Ursache sein.
Sollte das PHP Memory Limit aus welchem Grund auch immer ausgeschöpft sein, wird vom System folgende Fehlermeldung ausgegeben:
Fatal error: Allowed memory size of [x] bytes exhausted (tried to allocate [x] bytes) in /[x].php on line [x]
In diesem Fall müssen Sie aktiv werden und Ihr System analysieren. Gegebenenfalls lässt sich das Problem durch die Bereinigung des PHP-Codes oder durch die Deaktivierung von Plugins mit zu hohem Speicherbedarf lösen. Hilft nichts mehr, so bleibt Ihnen als letzte Möglichkeit noch das PHP Memory Limit zu erhöhen.
Zusammenhang zwischen dem PHP Memory Limit und der Anzahl der Seitenaufrufe
Wenn Sie das PHP Memory Limit erhöhen möchten, sollten Sie unbedingt auch die Korrelation zwischen dem Speicherlimit und der maximalen Anzahl von gleichzeitigen Seitenaufrufen kennen. Erhöhen Sie das Limit, das jedem PHP-Skript zur Verfügung steht, verringern Sie auch die Anzahl der gleichzeitig ausführbaren PHP-Skripte, die mit Seitenaufrufen gleichzusetzen sind.
Um den Zusammenhang besser zu verdeutlichen, möchten wir Ihnen ein Beispiel geben. In diesem Szenario gehen wir von einem Server mit 2 GB Arbeitsspeicher aus, der Ihnen vollständig zur Verfügung steht.
PHP Memory Limit | 128 MB | 256 MB | 512 MB | 1024 MB |
Max. Anzahl gleichzeitiger Seitenaufrufe | 16 | 8 | 4 | 2 |
PHP Memory Limit erhöhen
Die meisten Webhoster bieten bei ihren Hosting-Produkten die Standardgröße von 128 MB an. Das sollte für eine selbst entwickelte PHP-Website oder auch für die Installation und den Betrieb eines Content-Management-Systems (CMS) wie WordPress, Joomla, Drupal oder Typo3 ausreichend sein. Dennoch kommt es immer mal wieder vor, dass komplexe Anwendungen mit großen Datenbankabfragen, das Auslesen und Einlesen von XML-Dateien oder auch Plugins mit viel Rechenlogik ein höheres Limit erfordern. In diesem Fall können Sie über drei Varianten den PHP Memory Limit erhöhen.
Bei allen drei Varianten müssen Sie die Konfigurationsdateien öffnen und bearbeiten. Das können Sie entweder mit einem installierten FTP-Programm auf Ihrem PC oder direkt online über Web-FTP tun, sofern Ihr Webhoster solch eine Möglichkeit bietet. Sowohl die wp-config.php die php.ini als auch die .htaccess befinden sich im Root-Verzeichnis Ihrer CMS-Installation.
- wp-config.php
Beim CMS-Hosting kann das PHP Memory Limit in der Konfigurationsdatei wp-config.php erhöht werden. Öffnen Sie die Datei und fügen Sie folgenden Code ein bzw. passen Sie die Variable „WP_MEMORY_LIMIT“ an, insofern diese bereits definiert ist.
define('WP_MEMORY_LIMIT', '256M');
- .htaccess
Ebenfalls lässt sich das PHP Memory Limit über die .htaccess Datei erhöhen. Diese Datei wird ausschließlich von Apache-basierten Webservern verwendet. Ist das bei Ihnen der Fall, so können Sie hier folgenden Code einfügen bzw. das Limit anpassen.
php_value memory_limit 256M
- php.ini
Über die php.ini lassen sich Server-Einstellungen konfigurieren. Diese werden beim Shared Hosting meist vom Webhoster verwaltet. Es gibt jedoch einige Webhoster, die das Anlegen einer eigenen php.ini erlauben und somit individuell Konfigurationen zulassen. Zum Erhöhen fügen Sie folgenden Code mit der Variable „memory_limit“ in der Datei ein oder passen diese nach ihren Bedürfnissen an.
memory_limit = 256M;
- Im Skript erhöhen
Wenn Sie das PHP Memory Limit nicht global für alle PHP-Skripte Ihrer Website erhöhen möchten, können Sie dies auch für ein einzelnes Skript festlegen. Fügen Sie dazu einfach die folgende Anweisung in den Code ein.
ini_set('memory_limit', '256M');
Wir empfehlen, die Anpassungen über die wp-config.php vorzunehmen, da diese am übersichtlichsten ist und bei einer syntaktisch falschen Konfiguration am wenigsten Probleme auftreten. Auch das Erhöhen der Speichergrenze in einzelnen Skripten sollte problemlos möglich sein.
Mit der Wertzuweisung „-1“ wird die Speichergrenze aufgehoben. Das bedeutet, dass das PHP-Skript den kompletten zur Verfügung stehenden Speicher nutzten kann. Diese Einstellung sollten Sie jedoch unbedingt vermeiden, da es schnell zu Performance- und Speicherproblemen führt.
memory_limit = -1
Des Weiteren muss man wissen, dass eine Erhöhung des PHP Memory Limits nicht unbegrenzt möglich ist. Die maximale Höchstgrenze für das nutzbare Limit wird beim Shared Hosting vom Webhoster definiert und kann nicht überschritten werden. Ist das maximale Limit zu gering, so können Sie mit dem Webhoster in Kontakt treten, um eine Konfigurationsänderung zu erreichen, die Ihren Bedürfnissen entspricht, oder Sie wechseln zu einem Webhoster, der von vornherein ein höheres PHP Memory Limit anbietet.
Minimale und Maximale PHP Memory Limit der Webhoster
Webhoster bieten ihren Kunden bei den Shared Hosting Produkten unterschiedliche PHP Memory Limits an. Oftmals ist die Standardeinstellung geringer als die definierte Höchstgrenze, sodass Sie die Möglichkeit haben, eigenständig eine Erhöhung vorzunehmen. Ist die definierte Höchstgrenze Ihres Webhosting-Pakets zu klein, bekommen Sie ein höheres PHP Memory Limit nur durch ein Upgrade auf ein leistungsstärkeres Paket. Um Ihnen einen kleinen Überblick über die festgelegten Limits der Webhoster zu geben, haben wir für Sie die einzelnen Angaben in einer Tabelle zusammengetragen.
Webhoster | PHP Memory Limit minimum | PHP Memory Limit maximum | Website |
---|---|---|---|
1blu | 256 MB | 512 MB | zum Anbieter |
Alfahosting | 256 MB | 1024 MB | zum Anbieter |
All-Inkl | 64 MB | 1024 MB | zum Anbieter |
Dogado | 256 MB | 1024 MB | zum Anbieter |
Goneo | 128 MB | 512 MB | zum Anbieter |
Host Europe | 256 MB | 256 MB | zum Anbieter |
Ionos | 512 MB | 768 MB | zum Anbieter |
Häufig gestellte Fragen zum PHP Memory Limit
Um das PHP Memory Limit zu ermitteln, stehen Ihnen zwei einfache Möglichkeiten zur Verfügung. Die erste Option besteht darin, direkt bei Ihrem Webhoster nachzufragen oder auf dessen Website nach Informationen zur Speichergrenze zu suchen. Alternativ können Sie das Limit auch über einen PHP-Befehl auslesen. Dazu können Sie die folgenden Befehle in ein PHP-Skript einfügen:
- phpinfo();
Die Methode liefert zahlreiche Informationen zur Konfiguration, darunter auch das maximale PHP Memory Limit. - ini_get('memory_limit');
Diese Methode gibt den Wert des Konfigurationsparameters für das PHP Memory Limit aus.
Wenn Sie WordPress nutzen, können Sie die Speichergrenze im Administrationsbereich unter "Werkzeuge" > "Website-Zustand" > "Bericht" > "Server" abrufen.
Ein zu hohes Limit kann dazu führen, dass schlecht programmierte Skripte übermäßig viele Ressourcen beanspruchen und den gesamten Server verlangsamen. Es ist wichtig, dass Sie das Limit nur so hoch wie nötig festlegen und Skripte regelmäßig überprüfen.