Was ist Octane
Laravel Octane ist ein Paket, das mit hochperformanten Application-Servern die Performance Ihrer Laravel-Anwendung drastisch steigert. Bei klassischem PHP-FPM wird die Anwendung für jeden Request neu gestartet und danach wieder beendet. Octane startet die Anwendung nur einmal, hält sie im Speicher und verarbeitet nachfolgende Requests dadurch sehr schnell. Der entscheidende Unterschied zu PHP-FPM: Der Bootstrap der Anwendung (z. B. das Registrieren der Service-Provider) wird nicht bei jedem Request wiederholt. Einmal gestartet, verarbeitet Octane Requests extrem schnell.Unterstützte Server
Octane unterstützt drei Server:In Laravel Cloud wird der Octane-Betrieb mit FrankenPHP empfohlen und vollständig verwaltet unterstützt.
Installation und Konfiguration
Paket installieren
Erstkonfiguration von Octane
config/octane.php erzeugt.
FrankenPHP
Wenn Sie FrankenPHP wählen, lädt Octane das Binary automatisch herunter. Weitere Schritte sind nicht nötig.RoadRunner
Wenn Sie RoadRunner wählen, lädt Octane das Binary automatisch herunter.Swoole
Swoole installieren Sie als PHP-Erweiterung über PECL.Server starten
Server starten
8000. Erreichbar unter http://localhost:8000.
Server auswählen
Anzahl der Worker festlegen
Dateien überwachen
Während der Entwicklung werden Dateiänderungen ohne Neustart des Servers nicht wirksam. Mit dem Flag--watch startet der Server automatisch neu.
Weitere Verwaltungsbefehle
Hinweise zur Dependency Injection
Da Octane die Anwendung im Speicher hält, wirdregister bzw. boot der Service-Provider nur einmal beim Serverstart ausgeführt. Dieselbe Anwendungsinstanz wird über mehrere Requests hinweg wiederverwendet. Sein Sie daher vorsichtig, wenn Sie den Container oder den Request in Konstruktoren injizieren.
Container injizieren
Wenn Sie den Container direkt in den Konstruktor eines Singleton injizieren, wird der alte Container wiederverwendet.app() und Container::getInstance() liefern stets den aktuellen Container und sind daher sicher.
Request injizieren
In Controller-Methoden oder Route-Closures ist es sicher,
Illuminate\Http\Request per Typ-Hint zu verwenden. Auch der globale Helfer request() liefert stets den aktuellen Request.Config-Repository injizieren
config() liefert stets das aktuelle Config-Repository und ist daher sicher.
Speicherlecks vermeiden
Da Octane die Anwendung im Speicher behält, führen z. B. Daten, die in statischen Eigenschaften angesammelt werden, zu Speicherlecks.Worker mit max-requests recyceln
Sie können Worker nach einer bestimmten Anzahl Requests automatisch neu starten, um Speicherlecks abzumildern. Standard ist 500 Requests.Maximale Ausführungszeit einstellen
Inconfig/octane.php legen Sie die maximale Ausführungszeit eines Requests fest. Standard ist 30 Sekunden.
Nebenläufige Tasks (nur Swoole)
Mit Swoole können Sie überOctane::concurrently() mehrere Aufgaben parallel ausführen.
--task-workers fest.
Tick und Interval (nur Swoole)
Mit Swoole können Sie in festgelegten Intervallen wiederkehrende Aufgaben registrieren. Sie werden in derboot-Methode eines Service-Providers registriert.
Octane-Cache (nur Swoole)
Ein extrem schneller In-Memory-Cache basierend auf Swoole Tables. Bis zu 2 Millionen Lese-/Schreibvorgänge pro Sekunde sind möglich.Interval-Cache
Cache, der sich in einem festgelegten Intervall automatisch aktualisiert.Swoole-Tabellen (nur Swoole)
Sie können beliebige In-Memory-Tabellen definieren, auf die alle Worker zugreifen. Konfiguriert werden sie inconfig/octane.php unter tables.
Octane::table().
Produktivbetrieb
Nginx + Octane
In der Produktion wird Octane typischerweise hinter Nginx betrieben. Nginx bedient statische Dateien und terminiert TLS, dynamische Requests werden an Octane geproxyt.Persistieren mit Supervisor
Im Produktivbetrieb halten Sie Octane mit Supervisor dauerhaft am Laufen.HTTPS aktivieren
Damit über Octane HTTPS-Links generiert werden, setzen Sie in der.env:
Integration mit Laravel Cloud
Laravel Cloud unterstützt Octane mit FrankenPHP vollständig verwaltet. Konfigurationen für Nginx oder Supervisor sind nicht erforderlich – in nur zwei Schritten aktivieren Sie Octane.1
Paket installieren
Installieren Sie Octane. Den Befehl
octane:install können Sie ausführen, er ist aber nicht zwingend erforderlich.2
Octane in Laravel Cloud aktivieren
Öffnen Sie in der Umgebung die Einstellungen des App-Compute-Clusters, aktivieren Sie „Use Octane as runtime“ und speichern bzw. deployen Sie. Laravel Cloud baut und startet die Anwendung automatisch mit FrankenPHP + Octane.