Skip to main content

Wat is Octane

Laravel Octane is een package die de prestaties van je Laravel-applicatie drastisch verbetert door gebruik te maken van hoogperformante applicatieservers. Bij regulier PHP-FPM start en stopt de applicatie bij elke request. Met Octane wordt de applicatie één keer opgestart en in het geheugen gehouden, waarna volgende requests razendsnel worden afgehandeld. Het grootste verschil met PHP-FPM is dat het bootproces van de applicatie (zoals het registreren van service providers) niet bij elke request wordt herhaald. Na één keer opstarten worden requests supersnel verwerkt.

Ondersteunde servers

Octane ondersteunt de volgende drie servers.
Op Laravel Cloud wordt het draaien van Octane met FrankenPHP aanbevolen en volledig managed ondersteund.

Installatie en configuratie

De package installeren

Octane initialiseren

Bij het uitvoeren verschijnt een prompt waarin je een server kiest. Na de keuze wordt config/octane.php gegenereerd.

FrankenPHP

Kies je FrankenPHP, dan downloadt Octane automatisch de binary. Er zijn geen extra stappen nodig.

RoadRunner

Kies je RoadRunner, dan downloadt Octane automatisch de binary.

Swoole

Swoole installeer je als PHP-extensie via PECL.
Gebruik je Open Swoole, dan installeer je die met het volgende commando.

Starten

De server starten

Standaard start de server op poort 8000. Je kunt de applicatie bereiken via http://localhost:8000.

Een server opgeven

Het aantal workers opgeven

Wil je bij Swoole ook taskworkers opgeven, dan doe je dat zo.

Bestandswijzigingen volgen

Tijdens de ontwikkeling worden bestandswijzigingen pas zichtbaar na een herstart van de server. Met de flag --watch herstart de server automatisch.
Voor --watch heb je Node.js en Chokidar nodig.

Overige beheercommando’s

Aandachtspunten bij dependency injection

Omdat Octane de applicatie in het geheugen houdt, worden de register- en boot-methoden van service providers slechts één keer uitgevoerd, bij het opstarten van de server. Dezelfde applicatie-instantie wordt hergebruikt tussen requests, dus wees voorzichtig wanneer je de container of de request in de constructor van een object injecteert.

Injectie van de container

Injecteer je de container rechtstreeks in de constructor van een singleton, dan wordt een verouderde container hergebruikt.
De globale helper app() en Container::getInstance() geven altijd de meest recente container terug en zijn dus veilig.

Injectie van de request

Het typehinten van Illuminate\Http\Request in controllermethoden of routeclosures is veilig. Ook de globale helper request() geeft altijd de huidige request terug.

Injectie van de configuration repository

De globale helper config() geeft altijd de meest recente configuration repository terug en is dus veilig.

Geheugenlekken voorkomen

Omdat Octane de applicatie in het geheugen houdt, ontstaan er geheugenlekken als je data ophoopt in bijvoorbeeld statische properties.

Workers recyclen met max-requests

Je kunt geheugenlekken beperken door workers automatisch te laten herstarten nadat ze een bepaald aantal requests hebben verwerkt. De standaardwaarde is 500 requests.

De maximale uitvoeringstijd instellen

In config/octane.php kun je de maximale uitvoeringstijd van een request instellen. De standaardwaarde is 30 seconden.
Herstart de Octane-server nadat je max_execution_time hebt gewijzigd.

Gelijktijdige taken (alleen Swoole)

Als je Swoole gebruikt, kun je met Octane::concurrently() meerdere bewerkingen gelijktijdig uitvoeren.
Gelijktijdige taken worden uitgevoerd in aparte processen als “taskworkers” van Swoole. Het aantal taskworkers geef je op met --task-workers.
Je kunt maximaal 1024 taken doorgeven aan concurrently (een beperking van Swoole).

Ticks en intervals (alleen Swoole)

Met Swoole kun je bewerkingen registreren die periodiek op een opgegeven interval worden uitgevoerd. Je registreert ze in de boot-methode van een service provider.

Octane-cache (alleen Swoole)

Een supersnelle in-memory cache op basis van Swoole-tabellen. Er zijn tot 2 miljoen lees- en schrijfbewerkingen per seconde mogelijk.

Intervalcache

Een cache die automatisch op een opgegeven interval wordt ververst.
Alle data in de Octane-cache wordt gewist wanneer je de server herstart.

Swoole-tabellen (alleen Swoole)

Je kunt willekeurige in-memory tabellen definiëren die toegankelijk zijn vanuit alle workers. Je configureert ze via tables in config/octane.php.
Voor toegang tot een tabel gebruik je de methode Octane::table().
In Swoole-tabellen kun je alleen de kolomtypen string, int en float gebruiken. De data verdwijnt bij een herstart van de server.

Draaien in productie

Configuratie met Nginx + Octane

In productie draai je Octane doorgaans achter Nginx. Nginx serveert de statische bestanden en handelt de SSL-terminatie af, en proxyt dynamische requests naar Octane.

Als daemon draaien met Supervisor

In productie houd je Octane continu actief met Supervisor.

HTTPS inschakelen

Om via Octane HTTPS-links te genereren, stel je het volgende in in .env.

Integratie met Laravel Cloud

Laravel Cloud ondersteunt Octane met FrankenPHP volledig managed. Je hebt geen Nginx- of Supervisor-configuratie nodig en kunt Octane in slechts twee stappen inschakelen.
1

De package installeren

Installeer Octane. Je mag het commando octane:install uitvoeren, maar dat is niet verplicht.
2

Octane inschakelen in Laravel Cloud

Open de instellingen van het App-computecluster van je omgeving, zet “Use Octane as runtime” aan en sla op en deploy. Laravel Cloud bouwt en start je applicatie automatisch met FrankenPHP + Octane.
Zie de documentatie van Laravel Cloud voor meer details.

Workers herladen na een deploy

Na een deploy herlaad je de workers om de nieuwe code in het geheugen te laden.

De lokale server opgeven voor php artisan dev

Na het installeren van Octane kan het gebeuren dat het server-proces van php artisan dev ook Octane gaat gebruiken. Wil je in productie op Laravel Cloud Octane gebruiken maar lokaal de reguliere php artisan serve, registreer dan het server-commando opnieuw in de register-methode van je AppServiceProvider.
Wanneer je nu php artisan dev uitvoert, start het lokale server-proces met php artisan serve. Aan de kant van Laravel Cloud kun je Octane als runtime ingeschakeld laten.
Laatst gewijzigd op 6 september 2026