Meine Blog-Beiträge

Beschleunigen Sie Ihre Laravel App mit Swoole

Beschleunigen Sie Ihre Laravel App mit Swoole


Swoole ist ein asynchrones Programmierframework für PHP. Es ist eine PHP-Erweiterung, die in reinem C geschrieben wurde und es PHP-Entwicklern ermöglicht, leistungsstarke, skalierbare, gleichzeitige TCP, UDP, Unix-Socket, HTTP, IO-Programmierung zu schreiben, die WebSocket-Dienste in PHP nicht blockiert und Ihnen hohe Leistung in Swoole mit einem niedrigen Linux-Prozessor bietet.

Warum betreiben wir Laravel in Swoole?

Die folgende Abbildung zeigt den Lebenszyklus in PHP. Wie Sie sehen können, muss PHP jedes Mal, wenn Sie das PHP-Skript ausführen, Module und Zend Engine für Ihre laufende Umgebung starten. Und Ihr PHP-Skript muss in OpCodes für die Zend-Engine-Ausführung kompiliert werden.

Mit anderen Worten, im PHP-Lebenszyklus dauert es viel Zeit, um Ressourcen für die Skriptausführung zu erstellen und zu löschen. Und in Frameworks wie Laravel, wie viele Dateien müssen Sie für eine Anfrage hochladen? Es gibt auch eine Menge E/A-Verbrauch, um Dateien zu laden.

Was passiert also, wenn wir einen eingebauten Server auf Swoole haben und alle Skripte nach der ersten Installation im Speicher gespeichert werden können? Deshalb versuchen wir es zu betreiben, Swoole kann ein leistungsstarker Leistungsverstärker auf Laravel sein und Laravel bietet eine einfache Build- und Codenutzung. Das gibt uns die perfekte Kombination.

Setup

Anfordern dieses Pakets mit Composer:

$composer benötigen swooletw/laravel-swoole

Dieses Paket basiert auf der Swoole-Erweiterung. Bevor Sie dieses Paket verwenden, stellen Sie sicher, dass Sie Swoole einrichten.

Hinweis: Swoole unterstützt derzeit nur Linux und OSX. Windows-Server sind für Swoole noch nicht verfügbar.

Fügen Sie dann den Dienstanbieter hinzu:

Laravel fügen Sie den Dienstanbieter dem Array des Anbieters hinzu. config/app.php:

[
'Anbieter' => [
SwooleTW-Http-LaravelServiceProvider::klasse,
],
]

Lumen Wenn Sie es verwenden, fügen Sie den folgenden Code hinzu bootstrap/app.php:

$app->register(SwooleTW-Http-LumenServiceProvider::class);

Wenn Sie Laravel 5.5 und höher ausführen, können Sie diesen Schritt überspringen.

Sie können nun den folgenden Befehl ausführen, um den Swoole-HTTP-Server zu starten.

php artisan swoole:http start

Dann sehen Sie die folgende Meldung:

Swoole http-Server wird gestartet...
Swoole startete http Server:

Sie können jetzt unter dieser Adresse auf Ihre Laravel-App zugreifen.


Nginx Http Server

Ausführen des 10er-Tests bei http://lumen.app:9999
4 Gewinde und 100 Anschlüsse
Thread-Statistiken Avg Stdev Max +/- Stdev
Latenz 1,14s 191,03 ms 1,40s 90,31%
Req/Sec 22,65 10,65 50,00 65,31%
815 Anfragen in 10,07s, 223,65 KB gelesen
Anfragen/Sek.: 80.93
Transfer/Sek.: 22.21KB

Swoole HTTP-Server

Ausführen des 10er-Tests http://127.0.0.1:1215
4 Gewinde und 100 Anschlüsse
Thread-Statistiken Avg Stdev Max +/- Stdev
Latenzzeit 11,58 ms 4,74 ms 68,73 ms 81,63%
Req/Sec 2.19k 357.43 2.90k 69.50%
87879 Anfragen in 10,08s, 15,67 MB gelesen
Anfragen/Sek.: 8717.00
Transfer/Sek.: 1.55MB

Weitere Informationen finden Sie im Paket in Github RepoWater und offiziellen Dokumenten.



Diesen Artikel teilen


Kommentare (0)

Kommentar