Skip to main content

Qu’est-ce qu’Octane

Laravel Octane est un package qui accélère fortement Laravel en utilisant des serveurs d’applications à haute performance. Avec PHP-FPM classique, l’application démarre et s’arrête pour chaque requête. Avec Octane, l’application démarre une seule fois, reste en mémoire, et sert les requêtes suivantes très rapidement. La grande différence avec PHP-FPM : le bootstrap (enregistrement des service providers, etc.) n’est plus refait à chaque requête. Un seul démarrage, puis un traitement ultra-rapide.

Serveurs supportés

Trois options :
Laravel Cloud recommande Octane avec FrankenPHP et le prend en charge en managé.

Installation et configuration

Installation

Setup

Un prompt propose de choisir le serveur, puis config/octane.php est généré.

FrankenPHP

Octane télécharge automatiquement le binaire.

RoadRunner

Octane télécharge automatiquement le binaire.

Swoole

Installez l’extension via PECL.
Pour Open Swoole :

Démarrage

Serveur

Par défaut sur le port 8000 : http://localhost:8000.

Serveur spécifique

Nombre de workers

Avec Swoole, --task-workers pour les workers de tâches :

Watcher

Redémarre automatiquement quand un fichier change.
--watch nécessite Node.js et Chokidar.

Autres commandes

Injection de dépendances

Avec Octane, l’application est conservée en mémoire : les méthodes register / boot des providers ne s’exécutent qu’une fois au démarrage. Attention à ne pas injecter des instances anciennes de container ou de request.

Injection du container

Injecter le container dans un singleton fige un ancien container.
app() et Container::getInstance() renvoient toujours le container courant.

Injection de la requête

Type-hinter Illuminate\Http\Request dans une méthode de contrôleur reste sûr. request() retourne également la requête courante.

Injection du repository de configuration

config() retourne toujours la configuration courante.

Fuites mémoire

Comme l’application vit en mémoire, cumuler des données dans des propriétés statiques crée des fuites.

max-requests pour recycler les workers

Redémarre le worker après N requêtes. Défaut : 500.

Durée d’exécution max

Dans config/octane.php, défaut 30 s.
Redémarrez Octane après modification.

Tâches concurrentes (Swoole uniquement)

Octane::concurrently() exécute plusieurs closures en parallèle.
Elles s’exécutent dans des « task workers » séparés. Ajustez leur nombre avec --task-workers.
Maximum 1 024 tâches par appel (limite Swoole).

Tick et interval (Swoole uniquement)

Exécutez périodiquement du code dans un boot de provider.

Cache Octane (Swoole uniquement)

Cache en mémoire ultra rapide utilisant les Swoole Tables. Jusqu’à 2 millions d’opérations/s.

Interval cache

Cache auto-actualisé.
Les données sont perdues au redémarrage.

Swoole Tables (Swoole uniquement)

Tables partagées entre workers, définies dans config/octane.php.
Accès :
Types autorisés : string, int, float. Données perdues au redémarrage.

Exploitation en production

Nginx + Octane

Typiquement, Nginx sert les fichiers statiques et termine le SSL, puis proxie vers Octane.

Supervisor

Gardez Octane démarré via Supervisor.

Activer HTTPS

Pour générer des URLs HTTPS via Octane :

Laravel Cloud

Laravel Cloud prend Octane + FrankenPHP en charge en managé. Pas de config Nginx / Supervisor : deux étapes.
1

Installer le package

2

Activer Octane sur Laravel Cloud

Ouvrez les paramètres de compute App, activez « Use Octane as runtime », enregistrez et déployez. Cloud construit et démarre l’app avec FrankenPHP + Octane.
Voir la documentation Laravel Cloud.

Rechargement après déploiement

Après un déploiement, rechargez les workers pour charger le nouveau code.
Dernière modification le 13 juillet 2026