Was ist Opcache?
Jedes Mal, wenn ein PHP-Skript ausgeführt wird, muss das Skript in Bytecode kompiliert werden, und OPcache kann den Bytecode zwischenspeichern, sodass das nächste Mal dasselbe Skript ausgeführt wird angefordert wird, muss das Skript nicht neu kompiliert werden, was die Ausführungszeit des Skripts erheblich verkürzt, eine schnellere Ausführung der Anwendung ermöglicht und auch Server-Overhead spart.
Sprechen Sie mit Zahlen
Natürlich möchten wir wissen, welche Art von Optimierung vorgenommen wurde, obwohl die Leistungsverbesserung stark von der Konfiguration der Anwendung und des Servers abhängt , wir können ausführen. Haben Sie ein allgemeines Verständnis von Benchmarks.
Zu diesem Zweck habe ich speziell eine Maschine mit sehr geringer Konfiguration vorbereitet: 1 Kern-CPU, 1 GB Speicher, um den Apache-Benchmark-Test auszuführen. Was ich angefordert habe, war die Standard-Willkommensseite von Laravel 5.4, die 10 gleichzeitigen Anfragen den weiteren Zugriff für 1 Minute ermöglicht. Das Folgende sind die Benchmark-Ergebnisse der Deaktivierung von OPcache:
OPcache disabled: 10.18 requests per second
Für einen Server mit solch niedriger Konfiguration Es ist nicht schlecht, aber wir können es besser machen. Die Benchmark-Testergebnisse mit aktiviertem OPcache lauten wie folgt (unter Verwendung der Standard-OPcache-Konfiguration):
Enabled with default values: 34.52 requests per second
Die Lücke ist immer noch riesig! Als nächstes optimieren wir die OPcache-Konfiguration und der Benchmark-Test wird besser abschneiden:
Enabled with optimized values: 42.53 requests per second
Konnten Sie das nutzen?
Klingt großartig, aber wie man es benutzt
Zunächst müssen wir sicherstellen, dass OPcache auf dem Server installiert ist. Ab PHP 5.5. OPcache ist Teil des PHP-Kerns geworden, sodass für Laravel-Entwickler grundsätzlich keine Notwendigkeit besteht, diese Erweiterung manuell zu installieren.
Wenn Sie sich nicht sicher sind, können Sie dies natürlich durch einen Blick auf phpinfo() bestätigen:
<?php phpinfo();
Dieses Skript zeigt alle installierten PHP-Erweiterungen an. Suchen Sie auf der Seite nach „OPcache“. Wenn es gefunden wird, ist dies ein Beweis dafür, dass es installiert wurde. Wenn nicht, müssen Sie es selbst installieren.
Als nächstes müssen wir OPcache in der PHP-Konfigurationsdatei aktivieren (standardmäßig geschlossen):
opcache.enable=1
Als nächstes nehmen wir weiterhin einige Optimierungskonfigurationen für OPcache vor:
opcache.memory_consumption=512
Diese Konfiguration gibt den Speicherplatz (Einheit: MB) an, den Sie OPcache zuweisen möchten. Legen Sie einfach einen Wert größer als 64 fest.
opcache.interned_strings_buffer=64
Diese Konfiguration gibt den Speicherplatz (Einheit: MB) an, den Sie der tatsächlichen Zeichenfolge zuweisen möchten. Legen Sie einfach einen Wert größer als 16 fest.
opcache.max_accelerated_files=32531
Diese Konfiguration gibt an, wie viele Skripte zwischengespeichert werden können. Stellen Sie diesen Wert so nah wie möglich (oder größer als) an die Anzahl der im Projekt enthaltenen Skripte ein.
opcache.validate_timestamps=0
Ändern Sie den Konfigurationswert für Revalidierungsskripte. Wenn er auf 0 (beste Leistung) eingestellt ist, müssen Sie den OPcache nach jeder Änderung des PHP-Codes manuell löschen. Wenn Sie keine manuelle Bereinigung wünschen, können Sie den Wert auf 1 setzen und das Revalidierungsintervall über opcache.revalidate_freq konfigurieren, was möglicherweise etwas Leistung kostet, da Änderungen alle x Sekunden überprüft werden müssen.
opcache.save_comments=1
Bei dieser Konfiguration bleiben Kommentare im Skript erhalten. Ich empfehle, diese Option zu aktivieren, da einige Bibliotheken von dieser Konfiguration abhängen und ich keinen Vorteil darin sehe, sie zu deaktivieren.
opcache.fast_shutdown=0
Schnelles Herunterfahren bietet einen schnelleren Mechanismus zum Löschen des Speichers, in meinen Benchmarks war es jedoch langsamer. Möglicherweise bringt dies einige Leistungsverbesserungen für die Anwendung, aber Sie müssen es selbst ausprobieren.
Die endgültige Konfigurationsoptimierung sieht also so aus:
opcache.enable=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=64 opcache.max_accelerated_files=32531 opcache.validate_timestamps=0 opcache.save_comments=1 opcache.fast_shutdown=0
Sie können mit diesen Konfigurationswerten experimentieren, abhängig von Ihrer Anwendungsgröße und Serverkonfiguration.
Speichern Sie abschließend diese Konfigurationsdatei und starten Sie den Webserver neu. Ihre Anwendung wird definitiv schneller.
Bereiten Sie die Laravel-Anwendung vor
Wie bereits erwähnt, müssen wir den OPcache nach jeder Änderung des PHP-Codes manuell löschen, wenn opcache.validate_timestamps auf 0 gesetzt ist. Zu diesem Zweck habe ich ein Erweiterungspaket erstellt, um entsprechende Artisan-Befehle für die OPcache-Bereinigung bereitzustellen: https://github.com/appstract/laravel-opcache.
Führen Sie nach der Installation der Erweiterung einfach den folgenden Befehl aus, um den OPcache zu bereinigen:
php artisan opcache:clear
Darüber hinaus stellt das Erweiterungspaket auch einige andere nützliche Tools bereit, die Sie im Gesehen auf der GitHub-Seite .
Dieser Artikel ist nachgedruckt, Originaladresse: https://xueyuanjun.com/post/7326
Das obige ist der detaillierte Inhalt vonLassen Sie Ihre Laravel-Anwendung schneller laufen! (Verwendung von PHP OPcache). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!