PHP
PHP (Hypertext Preprocessor) ist eine Open-Source-Skriptsprache, die sich besonders für die Webentwicklung eignet. Sie läuft auf der Serverseite, das heißt, sie verarbeitet den Code auf dem Webserver, bevor sie ihn an den Client (Browser) sendet. WordPress basiert auf PHP und daher ist es für WordPress-Websites unverzichtbar. PHP ermöglicht es deiner WordPress-Website:
- Dynamische Inhalte zu generieren und sie in Echtzeit auf der Website anzuzeigen.
- Mit deiner Datenbank zu interagieren, um Daten abzurufen und zu speichern.
- Formulare zu bearbeiten und Benutzereingaben zu verarbeiten, wodurch WordPress-Websites interaktiver werden.
- Themes und Plugins zu verwenden, um die Kernfunktionen von WordPress zu erweitern.
- Die Leistung zu verbessern, indem es sicherstellst, dass ein Großteil der schweren Arbeit auf dem Webserver erledigt wird, bevor der Inhalt den Browser des Nutzers erreicht.
Wie PHP verarbeitet wird
Wenn ein Besucher eine nicht zwischengespeicherte Seite besucht oder eine Aktion auf einer Seite durchführt (z. B. etwas in den Warenkorb legen, ein Formular ausfüllen usw.), läuft folgender Prozess ab:
- Der Webserver (Nginx hier bei Kinsta) empfängt die Anfrage.
- Nginx leitet die Anfrage an PHP weiter, das einem verfügbaren PHP-Thread zugewiesen wird.
- Der PHP-Thread führt das PHP-Skript aus (z. B. holt er Daten aus der Datenbank oder verarbeitet Formulare).
- Während der Verarbeitung nutzt der PHP-Thread einen Teil des Serverspeichers bis zu dem in Kinsta festgelegten PHP-Speicherlimit.
- Wenn es mehrere gleichzeitige Besucher gibt, wird jede Anfrage einem anderen PHP-Thread zugewiesen. Wenn alle Threads ausgelastet sind, warten weitere Anfragen, bis ein Thread frei wird.
- PHP erzeugt dann eine HTML-Seite aus den PHP-Dateien deines Themes (und ggf. aus Plugin-Dateien).
- PHP übergibt die gerenderte HTML-Seite zurück an den Webserver.
- Die Seite wird an den Besucher ausgeliefert.
Wenn deine Website kein Caching nutzt oder nicht optimiert ist, können PHP-Threads länger beschäftigt sein, was die Leistung beeinträchtigen und zu Timeouts oder 503- und 504-Fehlern führen kann, wenn Besucher auf deine Website zugreifen. Informationen darüber, wie du die PHP-Leistung überprüfen und deine PHP-Threads optimieren kannst, findest du unter PHP-Leistung.
PHP-Threads
PHP-Threads (früher auch PHP-Worker genannt) sind einzelne PHP-Prozesse, die für die Bearbeitung eingehender Anfragen an deine Website zuständig sind. Jeder Thread bearbeitet jeweils eine Anfrage, das heißt, wenn du zwei Threads hast, können nur zwei Anfragen gleichzeitig bearbeitet werden.
Sobald ein PHP-Thread die Bearbeitung einer Anfrage abgeschlossen hat (z. B. das Rendern einer Seite oder das Abrufen von Daten aus einer Datenbank), ist er frei, um die nächste Anfrage zu bearbeiten.
PHP-Threads kommen vor allem dann ins Spiel, wenn eine Website den Großteil ihrer Inhalte nicht zwischenspeichern kann. Je dynamischer eine Website ist, desto mehr PHP-Threads braucht sie wahrscheinlich. Für gecachte Inhalte werden keine PHP-Threads benötigt, sondern nur dann, wenn die Website die Datenbank abfragen muss, um Informationen zu erhalten oder zu ändern. Eine optimierte Website bearbeitet Anfragen schnell und gibt PHP-Threads für die nächste Anfrage in der Warteschlange frei.
Informationen darüber, wie du deine PHP-Threads optimieren kannst, findest du unter PHP-Leistung.
Kinsta-Pläne und PHP-Threads
Die folgende Tabelle zeigt den Standard-PHP-Pool, die Anzahl der Threads und den Speicher pro Thread, die standardmäßig in jedem Plan bei Kinsta enthalten sind:
Plan | Poolgröße | Anzahl der Threads | Speicherplatz pro Thread |
---|---|---|---|
Single 35k | 512MB | 2 | 256MB |
Single 65k | 1GB | 4 | 256MB |
Single 125k | 1.5GB | 6 | 256MB |
Single 315k | 1.5GB | 6 | 256MB |
Single 500k | 2GB | 8 | 256MB |
Single 750k | 2GB | 8 | 256MB |
WP 2 | 512MB | 2 | 256MB |
WP 5 | 1GB | 4 | 256MB |
WP 10 | 1GB | 4 | 256MB |
WP 20 | 1.5GB | 6 | 256MB |
WP 40 | 1.5GB | 6 | 256MB |
Du kannst die Anzahl der PHP-Threadsändern für jede Website innerhalb WordPress Websites > seitenname > Info > PHP-Leistung > Ändern.
Die folgenden Pläne haben derzeit keinen Zugriff auf die PHP-Leistungsfunktion oder PHP-Pools. Sie enthalten jedoch standardmäßig die folgende Anzahl von PHP-Threads:
Plan | PHP-Threads pro Website |
---|---|
Single 1.25M | 10 |
Single 1.9M | 12 |
Single 2.5M | 14 |
Single 3.15M | 16 |
WP 60 | 8 |
WP 80 | 10 |
WP 120 | 12 |
WP 150 | 14 |
Agency 20 | 6 |
Agency 40 | 6 |
Agency 60 | 8 |
PHP-Speicherlimit
Das PHP-Speicherlimit legt fest, wie viel Arbeitsspeicher (RAM) jeder PHP-Thread während der Bearbeitung einer Anfrage maximal nutzen kann.
Dieses Limit ist wichtig, weil PHP-Skripte (vor allem in WordPress) oft speicherintensive Aufgaben wie große Datenbankabfragen, Medien-Uploads oder komplexe Berechnungen bewältigen müssen.
Wenn ein Skript die festgelegte Speichergrenze überschreitet, führt dies zu einer Fehlermeldung (z. B. „Erlaubte Speichergröße erschöpft“). Dadurch wird verhindert, dass ein Skript zu viele Serverressourcen verbraucht.
Kinsta-Pläne und PHP-Speicher
Das Standard-Speicherlimit von Kinsta liegt bei 256 MB für die Tarife Single 35k, 65k, 125k, 315k, 500k und 750k sowie WP 2, 5, 10, 20 und 40, was für die meisten WordPress-Plugins und Websites mehr als ausreichend ist. Die Tarife Single 1.25M, 1.9M, 2.5M und 3.15M, WP 60, 80, 120 und 150 sowie Agency 20, 40 und 60 haben ein Speicherlimit von 512 MB. Dieses Limit soll verhindern, dass PHP-Skripte zu viel Speicher verbrauchen. Wenn du das Limit zu hoch ansetzt, kann ein falsch konfiguriertes oder fehlerhaftes Skript ernsthafte Probleme verursachen, weil es zu viel Speicher verbraucht.
Du kannst das PHP-Speicherlimit einer Website ändern in WordPress Websites > seitenname > Info > PHP-Leistung > Ändern.
Wechselwirkung zwischen PHP-Threads und Speicher
Die Anzahl der PHP-Threads ist nicht mit dem PHP-Speicherlimit zu verwechseln. PHP-Threads sind einzelne PHP-Prozesse, die eingehende Webanfragen bearbeiten, während das PHP-Speicherlimit die maximale Menge an Speicher (RAM) angibt, die ein einzelnes PHP-Skript während der Ausführung nutzen kann.
PHP-Threads verwalten die Gleichzeitigkeit, indem sie mehrere Anfragen gleichzeitig bearbeiten, während das PHP-Speicherlimit die Ressourcenzuweisung verwaltet, indem es die Speichernutzung einzelner Skripte einschränkt. Dadurch wird verhindert, dass ein einzelnes Skript den gesamten verfügbaren Speicher des Servers nutzt.
PHP-Speicherlimits sind wichtig für Skripte, die viel Speicher benötigen, wie z. B. Skripte, die große Datenbankabfragen durchführen, große Dateien hochladen oder komplexe Berechnungen ausführen. Wenn du auf deiner Website Fehler bei der Speicherbegrenzung feststellst, wird die Erhöhung der Anzahl der PHP-Threads das Problem nicht lösen. Stattdessen solltest du den Speicher pro Thread in WordPress Websites erhöhen > seitenname > Info > PHP-Leistung > Ändern.
Wechselwirkung zwischen PHP-Threads, CPU und RAM
Wenn du PHP-Threads hinzufügst, müssen die CPU- und RAM-Ressourcen berücksichtigt werden. Wenn du die Anzahl der PHP-Threads erhöhst, der Server aber mehr CPU und RAM benötigt, um diese Threads zu unterstützen, führt dies zu einem Engpass, da die Anfragen nicht effizient bearbeitet werden können.
Bei Kinsta ist jeder benutzerdefinierte LXD-Container mit 12 CPUs und 8 GB RAM ausgestattet. Durch den Einsatz von rechenoptimierten virtuellen C2- und C3D-Maschinen, die mit den schnellsten CPUs von Google Cloud ausgestattet sind, sorgen wir außerdem dafür, dass die PHP-Threads deiner Website effizienter laufen. Unsere skalierbare Infrastruktur stellt sicher, dass die PHP-Threads deiner WordPress-Website über genügend CPU-Ressourcen verfügen, um mit maximaler Leistung zu arbeiten.
Standard-PHP-Werte
Als Managed WordPress-Service hat Kinsta die optimalen PHP-Einstellungen für WordPress-Seiten konfiguriert. Wenn du spezielle PHP-Anforderungen hast, kannst du dich gerne an unser Support-Team wenden, um deine Bedürfnisse zu besprechen.
Kinsta bietet PHP 7.4, 8.0, 8.1, 8.2, 8.3 und 8.4 an. Dies sind die Standardeinstellungen für PHP:
- memory_limit = 256M
- post_max_size = 128M
- upload_max_filesize = 128M
- max_input_vars = 10000
- max_execution_time = 300