Die Optimierung der PHP-Leistung stellt sicher, dass unsere Webanwendungen reibungslos laufen, schnell reagieren und den Datenverkehr effizient verarbeiten. Nachfolgend finden Sie eine detaillierte Schritt-für-Schritt-Anleitung zur effektiven Maximierung der PHP-Leistung mit praktischen Beispielen für jede Optimierungsstrategie.
Überprüfen Sie zunächst die aktuelle Version von PHP, die auf Ihrem System installiert ist:
php -v
Wenn Ihre Version veraltet ist, bringt ein Upgrade auf die neueste stabile PHP-Version häufig Leistungsverbesserungen und neue Funktionen mit sich.
Um die neueste PHP-Version zu installieren, führen Sie die folgenden Befehle für Ubuntu aus:
sudo apt update sudo apt install software-properties-common sudo add-apt-repository ppa:ondrej/php sudo apt install php8.2 # Replace with the latest version
Jede neue PHP-Version bringt Leistungssteigerungen. Beispielsweise bietet PHP 7.x im Vergleich zu PHP 5.x eine Verbesserung der Ausführungszeit um fast 50 %, und PHP 8.x weist weitere signifikante Verbesserungen auf.
Opcache speichert vorkompilierten Skript-Bytecode im Speicher, sodass PHP bei jeder Anfrage weniger Skripte laden und analysieren muss. Um es zu aktivieren:
sudo nano /etc/php/8.2/fpm/php.ini # Use your PHP version
opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.revalidate_freq=0
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
Opcache kann die Leistung drastisch verbessern, indem es die Notwendigkeit eliminiert, PHP-Code bei jeder Anfrage zu kompilieren, wodurch die CPU-Auslastung und die Anfragezeit erheblich reduziert werden.
Eine unsachgemäße Datenbankindizierung kann die Abfrageausführung verlangsamen. Stellen Sie sicher, dass Sie Spalten indizieren, die in WHERE-Klauseln oder zum Sortieren verwendet werden.
Beispiel für eine MySQL-Abfrage:
CREATE INDEX idx_user_email ON users(email);
Profilieren Sie Ihre Datenbankabfragen, um Engpässe zu finden. Das Eloquent ORM von Laravel ermöglicht beispielsweise die Erstellung von Abfrageprofilen:
DB::enableQueryLog(); $users = DB::table('users')->get(); dd(DB::getQueryLog());
Durch die Optimierung Ihrer Datenbankabfragen und die Indizierung kritischer Spalten können Sie die Ausführungszeit der Abfrage erheblich verkürzen und so Ihre PHP-Anwendung beschleunigen.
Gzip reduziert die Größe der von Ihrem Server an den Client gesendeten Daten und beschleunigt so das Laden der Seite. Um es in Nginx zu aktivieren:
sudo nano /etc/nginx/nginx.conf
gzip on; gzip_comp_level 2; gzip_types text/css application/javascript application/json image/svg xml; gzip_min_length 256;
sudo systemctl restart nginx
Durch die Aktivierung der Gzip-Komprimierung wird die Menge der zu übertragenden Daten reduziert, was zu schnelleren Seitenladezeiten und einer geringeren Bandbreitennutzung führt.
CDNs wie Cloudflare oder Amazon CloudFront speichern Kopien statischer Assets wie CSS, JavaScript und Bilder auf verteilten Servern weltweit und machen sie so näher am Benutzer verfügbar.
Beispiel:
Durch die Auslagerung statischer Inhalte auf ein CDN reduzieren Sie die Belastung Ihres Servers und verbessern die Reaktionszeiten für Benutzer auf der ganzen Welt drastisch.
Stellen Sie sicher, dass Sie PHP-FPM (FastCGI Process Manager) verwenden, das besser für Hochlastumgebungen optimiert ist:
sudo apt install php8.2-fpm
Sie können die PHP-FPM-Einstellungen optimieren, um mehr Anfragen effizient zu bearbeiten, indem Sie die Einstellungen pm.max_children, pm.start_servers, pm.min_spare_servers und pm.max_spare_servers in der PHP-FPM-Pool-Konfigurationsdatei anpassen.
Bearbeiten Sie die Pool-Konfigurationsdatei:
sudo nano /etc/php/8.2/fpm/pool.d/www.conf
pm.max_children basierend auf verfügbarem Speicher und Datenverkehr erhöhen:
pm.max_children = 50 pm.start_servers = 10 pm.min_spare_servers = 5 pm.max_spare_servers = 20
PHP-FPM und Nginx neu starten:
sudo systemctl restart php8.2-fpm sudo systemctl restart nginx
Mit PHP-FPM können Ihre PHP-Prozesse mehr gleichzeitige Anfragen effizient verarbeiten und so die Antwortzeit des Servers bei hoher Auslastung verkürzen.
Die Minimierung Ihrer CSS-, JavaScript- und HTML-Dateien durch Entfernen unnötiger Leerzeichen und Kommentare reduziert die Dateigröße.
Verwenden Sie Tools wie Laravel Mix oder Gulp:
npm install laravel-mix --save-dev
Beispiel für eine webpack.mix.js-Datei für Laravel:
const mix = require('laravel-mix'); mix.js('resources/js/app.js', 'public/js') .sass('resources/sass/app.scss', 'public/css') .minify('public/js/app.js') .minify('public/css/app.css');
Fügen Sie in Ihrer Nginx-Konfigurationsdatei Caching für statische Assets hinzu:
location ~* \.(css|js|jpg|jpeg|png|gif|ico|woff|woff2)$ { expires 1y; access_log off; add_header Cache-Control "public"; }
Durch die Minimierung und Bündelung von Assets sowie die Aktivierung des Browser-Cachings wird die Größe Ihrer Dateien reduziert und die Ladezeiten verkürzt, was zu einer schnelleren Anwendung führt.
So installieren Sie Redis:
sudo apt install redis-server
Öffnen Sie in Laravel die .env-Datei und konfigurieren Sie Redis als Cache-Treiber:
CACHE_DRIVER=redis
Verwenden Sie Abfrage-Caching, um wiederholte Datenbankabfragen zu beschleunigen:
$users = Cache::remember('users', 60, function() { return DB::table('users')->get(); });
Durch das Zwischenspeichern von Datenbankabfragen reduzieren Sie die Datenbanklast und verbessern die Antwortzeiten für häufig aufgerufene Daten drastisch.
Composer-Autoloader für die Produktion optimieren:
composer install --optimize-autoloader --no-dev
Deaktivieren Sie in Laravel alle nicht verwendeten Dienstanbieter in config/app.php, um die Speichernutzung zu reduzieren und die Startzeit der Anwendung zu beschleunigen.
Autoload-Optimierung kompiliert Klassenzuordnungen und beschleunigt so das Laden von Klassen. Das Deaktivieren ungenutzter Dienste trägt dazu bei, dass die Anwendung weniger Ressourcen verbraucht.
Installieren Sie Laravel Telescope, um Ihre Anwendung zu profilieren:
composer require laravel/telescope php artisan telescope:install php artisan migrate php artisan serve
Sie können Tools von Drittanbietern wie New Relic oder Blackfire integrieren, um Anwendungsengpässe, Datenbankleistung und mehr zu analysieren.
Überwachungs- und Profilierungstools helfen dabei, langsame Abfragen, Speicherlecks und Engpässe in Ihrer PHP-Anwendung zu erkennen, sodass Sie Leistungsprobleme proaktiv beheben können.
Indem Sie diese Schritte befolgen, können Sie die Leistung Ihrer PHP-Anwendung erheblich verbessern. Von der Aktualisierung von PHP und der Aktivierung von Opcode-Caching bis hin zur Optimierung von Datenbankabfragen und der Konfiguration von PHP-FPM trägt jeder Schritt zu einer reaktionsschnelleren und skalierbareren Anwendung bei.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3