Heim > PHP-Framework > Laravel > Lassen Sie Ihre Laravel-Anwendung schneller laufen! (Verwendung von PHP OPcache)

Lassen Sie Ihre Laravel-Anwendung schneller laufen! (Verwendung von PHP OPcache)

藏色散人
Freigeben: 2020-04-22 13:31:58
nach vorne
2705 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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();
Nach dem Login kopieren

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
Nach dem Login kopieren

Als nächstes nehmen wir weiterhin einige Optimierungskonfigurationen für OPcache vor:

opcache.memory_consumption=512
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Ä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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:xueyuanjun.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage