PHP ist die Grundlage der meisten Websites und CMS-Systeme im Internet. Die richtige PHP-Konfiguration und -Optimierung kann die Performance Ihrer Website um das Zwei- bis Zehnfache steigern. Dieser Guide zeigt Ihnen alle Stellschrauben für schnelleres PHP – von der Konfiguration über Code-Optimierung bis hin zu fortgeschrittenem Profiling.
Warum PHP-Performance wichtig ist
PHP verarbeitet die serverseitige Logik der meisten Websites. Jeder Seitenaufruf löst PHP-Code aus, der Daten aus der Datenbank holt, verarbeitet und als HTML ausliefert. Je schneller dieser Prozess abläuft, desto besser ist die Nutzererfahrung. Zusammen mit gutem Hosting und Caching bildet optimiertes PHP die Grundlage für schnelle Websites.
PHP-Version: Der einfachste Performance-Gewinn
Die wichtigste Maßnahme ist gleichzeitig die einfachste: Nutzen Sie immer die neueste PHP-Version. Jede neue Major-Version bringt erhebliche Performance-Verbesserungen.
| PHP-Version | Relative Performance | Status |
|---|---|---|
| PHP 7.0 | Basis (2x schneller als PHP 5.6) | End of Life |
| PHP 7.4 | 10-15% schneller als 7.0 | End of Life |
| PHP 8.0 | 5-10% schneller als 7.4 + JIT | End of Life |
| PHP 8.1 | Weitere Verbesserungen + Fibers | Security-only |
| PHP 8.2 | Optimierte Speichernutzung | Aktiv |
| PHP 8.3 | Weitere Optimierungen | Aktiv (empfohlen) |
OPcache: Unverzichtbar für jede PHP-Installation
OPcache ist die wichtigste PHP-Erweiterung für Performance. Sie speichert kompilierten PHP-Bytecode im Shared Memory, sodass PHP-Dateien nicht bei jedem Aufruf neu geparst und kompiliert werden müssen. Ohne OPcache verschwendet Ihr Server bei jedem Seitenaufruf wertvolle CPU-Zeit.
OPcache-Konfiguration für Produktion
| Einstellung | Wert | Erläuterung |
|---|---|---|
| opcache.enable | 1 | OPcache aktivieren |
| opcache.memory_consumption | 256 | RAM in MB für Cache-Speicher |
| opcache.interned_strings_buffer | 32 | RAM für String-Caching |
| opcache.max_accelerated_files | 20000 | Maximale Anzahl gecachter Dateien |
| opcache.validate_timestamps | 0 | Keine Dateiänderungsprüfung (Produktion) |
| opcache.save_comments | 1 | Für Frameworks die Annotations nutzen |
| opcache.enable_file_override | 1 | Optimiert file_exists und is_file |
Beachten Sie: Mit validate_timestamps=0 müssen Sie den OPcache nach Deployments manuell leeren, da Dateiänderungen nicht automatisch erkannt werden. Bei einem Root-Server können Sie dies in Ihr Deployment-Skript integrieren.
PHP-FPM: Der richtige Prozess-Manager
PHP-FPM (FastCGI Process Manager) ist der Standard-Prozess-Manager für PHP in Produktionsumgebungen. Er verwaltet einen Pool von PHP-Worker-Prozessen und bietet bessere Performance und Kontrolle als mod_php oder CGI.
PHP-FPM Pool-Konfiguration
| Einstellung | Beschreibung | Empfehlung |
|---|---|---|
| pm | Prozess-Manager-Typ | dynamic (Standard) oder ondemand |
| pm.max_children | Maximale Worker-Prozesse | RAM / 30MB pro Prozess |
| pm.start_servers | Startanzahl bei dynamic | 25% von max_children |
| pm.min_spare_servers | Minimale freie Worker | 25% von max_children |
| pm.max_spare_servers | Maximale freie Worker | 75% von max_children |
| pm.max_requests | Anfragen pro Worker bis Neustart | 500-1000 |
Berechnung der maximalen Worker
Die Formel für pm.max_children hängt vom verfügbaren RAM ab. Wenn Ihr vServer 4 GB RAM hat und das Betriebssystem sowie die Datenbank 1,5 GB benötigen, bleiben 2,5 GB für PHP. Bei durchschnittlich 30-50 MB pro PHP-Prozess ergibt das 50-80 mögliche Worker.
PHP.ini-Optimierung
Neben OPcache gibt es weitere php.ini-Einstellungen, die die Performance beeinflussen:
| Einstellung | Performance-Wert | Hinweis |
|---|---|---|
| realpath_cache_size | 4096k | Größerer Cache für Dateipfade |
| realpath_cache_ttl | 600 | Längere Gültigkeit |
| output_buffering | 4096 | Ausgabe-Pufferung aktivieren |
| max_execution_time | 30 | Langsame Skripte abbrechen |
| memory_limit | 256M | Genug, aber nicht zu viel |
| expose_php | Off | Sicherheit: PHP-Version verbergen |
| session.save_handler | redis | Sessions in Redis statt Dateisystem |
JIT-Compiler in PHP 8
PHP 8.0 führte einen JIT-Compiler (Just-In-Time) ein, der PHP-Code in nativen Maschinencode übersetzt. Der JIT bringt vor allem bei rechenintensiven Aufgaben Vorteile. Für typische Webanwendungen ist der Effekt geringer, da dort I/O-Operationen (Datenbank, Dateisystem) den Flaschenhals darstellen.
Wann der JIT hilft
- Mathematische Berechnungen und Algorithmen
- Bildverarbeitung in PHP
- Datenkonvertierung und -verarbeitung
- Rechenintensive API-Endpoints
Wann der JIT wenig bringt
- Standard-CMS-Websites (WordPress, Joomla) – einen Überblick bietet unser CMS-Vergleich
- Datenbankintensive Anwendungen
- Seiten, die hauptsächlich I/O-bound sind
Code-Optimierung: Best Practices
Datenbankabfragen optimieren
- Prepared Statements verwenden (Performance + Sicherheit)
- Nur benötigte Spalten abfragen (SELECT * vermeiden)
- Indizes für häufig abgefragte Spalten erstellen
- N+1-Query-Probleme vermeiden durch JOINs oder Eager Loading
- Ergebnisse cachen, wenn sie sich selten ändern
Autoloading optimieren
- PSR-4-Autoloading statt manueller require-Aufrufe
- Composer Autoloader mit classmap optimieren: composer dump-autoload --optimize
- Classmap-Authoritative für Produktion: composer dump-autoload --classmap-authoritative
Allgemeine Code-Tipps
- Echte String-Funktionen statt Regex, wo möglich (strpos statt preg_match)
- Arrays effizient nutzen – PHP-Arrays sind Hashmaps
- Große Dateien mit Generatoren statt Arrays verarbeiten
- Unnötige Funktionsaufrufe in Schleifen vermeiden
- Type Declarations nutzen – helfen dem JIT und verhindern Bugs
PHP-Profiling: Flaschenhälse finden
Bevor Sie optimieren, müssen Sie wissen, wo die Zeit verloren geht. Profiling-Tools helfen dabei, die langsamsten Teile Ihres Codes zu identifizieren.
Profiling-Tools
| Tool | Typ | Eignung |
|---|---|---|
| Xdebug Profiler | Detailliertes Profiling | Entwicklung, nicht Produktion |
| Blackfire.io | SaaS-Profiler | Entwicklung und Produktion |
| Tideways | APM + Profiling | Produktion, deutsches Unternehmen |
| SPX | Leichtgewichtiger Profiler | Entwicklung und Produktion |
PHP-Performance auf verschiedenen Hosting-Typen
Die Möglichkeiten zur PHP-Optimierung hängen stark vom Hosting-Typ ab:
- Shared Hosting: Begrenzte Einflussnahme, meist nur PHP-Version wählbar
- vServer: Volle Kontrolle über PHP-Konfiguration und OPcache
- Root-Server: Maximale Kontrolle, eigene PHP-Kompilierung möglich
Für ernsthafte PHP-Optimierung benötigen Sie mindestens einen vServer – vergleichen Sie die Hosting-Kosten der verschiedenen Optionen. Unser Guide zur vServer-Konfiguration hilft Ihnen bei der Einrichtung.
Fazit: PHP-Performance ganzheitlich angehen
PHP-Performance-Optimierung beginnt mit der richtigen Version und OPcache-Konfiguration – diese beiden Maßnahmen allein bringen oft 50-200% Verbesserung. Stellen Sie zudem sicher, dass Ihre Website ein SSL-Zertifikat nutzt, um von HTTP/2-Vorteilen zu profitieren. Ergänzen Sie dies mit PHP-FPM-Tuning und Code-Optimierung für weitere Gewinne. Nutzen Sie Profiling, um gezielt die größten Flaschenhälse zu finden. Kombiniert mit Caching, einem CDN und Datenbank-Optimierung erreichen Sie maximale Website-Performance.
Häufig gestellte Fragen
Welche PHP-Version sollte ich verwenden?
Verwenden Sie immer die neueste stabile PHP-Version, derzeit PHP 8.3 oder höher. Jede neue Hauptversion bringt erhebliche Performance-Verbesserungen – PHP 8 ist bis zu dreimal schneller als PHP 7.0. Ältere Versionen erhalten zudem keine Sicherheitsupdates mehr.
Was ist OPcache und wie aktiviere ich es?
OPcache speichert kompilierten PHP-Bytecode im Arbeitsspeicher, sodass PHP-Dateien nicht bei jedem Aufruf neu geparst werden müssen. OPcache ist in PHP standardmäßig enthalten und kann in der php.ini mit opcache.enable=1 aktiviert werden. Der Performancegewinn beträgt typischerweise 50-100 Prozent.
Was ist der Unterschied zwischen PHP-FPM und mod_php?
PHP-FPM (FastCGI Process Manager) verwaltet PHP-Prozesse als eigenständigen Pool, während mod_php direkt im Apache-Webserver läuft. PHP-FPM ist deutlich ressourcenschonender, besser skalierbar und ermöglicht die Kombination mit Nginx als Webserver.
Wie finde ich heraus, welche PHP-Funktionen meine Website verlangsamen?
Nutzen Sie Profiling-Tools wie Xdebug oder Tideways, um die Ausführungszeit einzelner Funktionen zu messen. Das Slow Query Log hilft bei langsamen Datenbankabfragen. Auch das WordPress-Plugin Query Monitor zeigt detaillierte Performance-Informationen für WordPress-Seiten.
Kann ich PHP auf Shared Hosting optimieren?
Auf Shared Hosting sind die Möglichkeiten begrenzt – meist können Sie nur die PHP-Version wählen und einige php.ini-Werte per .htaccess oder Kundenbereich anpassen. Für umfassende PHP-Optimierung wie OPcache-Tuning und PHP-FPM-Konfiguration benötigen Sie mindestens einen vServer.