Skip to main content

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

Beim Ausführen werden Sie zur Auswahl eines Servers aufgefordert. Nach der Auswahl wird 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.
Für Open Swoole verwenden Sie:

Server starten

Server starten

Der Standardport ist 8000. Erreichbar unter http://localhost:8000.

Server auswählen

Anzahl der Worker festlegen

Bei Swoole können Sie zusätzlich Task-Worker angeben:

Dateien überwachen

Während der Entwicklung werden Dateiänderungen ohne Neustart des Servers nicht wirksam. Mit dem Flag --watch startet der Server automatisch neu.
Für --watch werden Node.js und Chokidar benötigt.

Weitere Verwaltungsbefehle

Hinweise zur Dependency Injection

Da Octane die Anwendung im Speicher hält, wird register 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.
Die globalen Helfer 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

Der globale Helfer 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

In config/octane.php legen Sie die maximale Ausführungszeit eines Requests fest. Standard ist 30 Sekunden.
Nach einer Änderung von max_execution_time müssen Sie den Octane-Server neu starten.

Nebenläufige Tasks (nur Swoole)

Mit Swoole können Sie über Octane::concurrently() mehrere Aufgaben parallel ausführen.
Nebenläufige Tasks werden als „Task-Worker“ von Swoole in separaten Prozessen ausgeführt. Die Anzahl legen Sie mit --task-workers fest.
An concurrently können maximal 1024 Tasks übergeben werden (Limit von Swoole).

Tick und Interval (nur Swoole)

Mit Swoole können Sie in festgelegten Intervallen wiederkehrende Aufgaben registrieren. Sie werden in der boot-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.
Beim Neustart des Servers gehen alle Daten im Octane-Cache verloren.

Swoole-Tabellen (nur Swoole)

Sie können beliebige In-Memory-Tabellen definieren, auf die alle Worker zugreifen. Konfiguriert werden sie in config/octane.php unter tables.
Der Zugriff erfolgt über die Methode Octane::table().
Als Spaltentypen sind in Swoole-Tabellen nur string, int und float möglich. Beim Serverneustart gehen die Daten verloren.

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.
Details finden Sie in der Dokumentation von Laravel Cloud.

Worker nach Deployment neu laden

Um nach dem Deployment neuen Code in den Speicher zu laden, führen Sie ein Reload der Worker aus.
Zuletzt geändert am 13. Juli 2026