Cos’è Octane
Laravel Octane è un pacchetto che migliora drasticamente le prestazioni di Laravel usando application server ad alte prestazioni. Con PHP-FPM l’app parte e termina a ogni richiesta. Con Octane l’app parte una volta e resta in memoria: le richieste successive sono molto più veloci. La differenza principale con PHP-FPM: il bootstrap (service provider, ecc.) non si ripete per ogni richiesta.Server supportati
Laravel Cloud offre Octane con FrankenPHP completamente gestito.
Installazione
config/octane.php.
FrankenPHP / RoadRunner
Octane scarica il binario. Nessun passo aggiuntivo.Swoole
Avvio
8000.
Worker
Watch file
Comandi
Attenzioni con la DI
Il codice resta in memoria:register/boot dei service provider vengono eseguiti una sola volta all’avvio.
Iniezione del container
app() e Container::getInstance() restituiscono sempre l’ultimo container.
Iniezione della request
I type hint di
Illuminate\Http\Request nei metodi controller/route sono sicuri. request() restituisce sempre la richiesta corrente.Iniezione del config repository
config() restituisce sempre l’ultimo.
Memory leak
Attenzione a static che accumulano dati:max-requests
Riavvia i worker dopo N richieste (default 500):Tempo massimo di esecuzione
Inconfig/octane.php (default 30s):
Task concorrenti (solo Swoole)
--task-workers.
Tick e Interval (solo Swoole)
Octane cache (solo Swoole)
Fino a 2 milioni di ops/s.Interval cache
Tabelle Swoole (solo Swoole)
Inconfig/octane.php sezione tables:
Produzione
Nginx + Octane
Supervisor
HTTPS
Laravel Cloud
1
Installa il pacchetto
2
Attiva Octane in Laravel Cloud
Nel cluster compute App attiva “Use Octane as runtime”, salva e deploya.
Reload dopo il deploy
Sovrascrivere il server locale di php artisan dev
Quando Octane è installato, anche il processo server di php artisan dev potrebbe essere configurato per usare Octane. Se vuoi usare Octane in produzione su Laravel Cloud ma il classico php artisan serve in locale, ri-registra il comando server nel metodo register dell’AppServiceProvider.
php artisan dev il processo server locale viene avviato tramite php artisan serve. Su Laravel Cloud puoi mantenere Octane abilitato come runtime.