Skip to main content

Introduction

La façade Process de Laravel est un wrapper mince du composant Symfony Process. Elle offre une API concise pour appeler des commandes shell depuis Laravel et traiter les résultats.

Lancer un processus

Process::run() exécute une commande de manière synchrone.
L’instance ProcessResult expose plusieurs méthodes.

Lever une exception en cas d’échec

throw() ou throwIf() lèvent Illuminate\Process\Exceptions\ProcessFailedException si le code de sortie est non nul.

Options

Répertoire de travail

path() définit le répertoire de travail (sinon celui de PHP).

Entrée standard

input() fournit stdin.

Timeout

60 s par défaut. Modifiez avec timeout(). En cas de timeout, ProcessTimedOutException est levée.
Utilisez aussi les helpers CarbonInterval.
Désactiver le timeout : forever().
Timeout d’inactivité (secondes sans sortie) :

Variables d’environnement

env() ajoute ou surcharge les variables. Les variables système sont héritées automatiquement.
Pour supprimer une variable héritée, utilisez false.

Désactiver la sortie

quietly() évite de consommer de la mémoire quand la sortie est volumineuse.

Sortie en temps réel

Passez une closure comme deuxième argument à run().

Pipelines

Process::pipe() enchaîne des commandes.
Tableau de commandes :
as() nomme chaque processus.

Processus asynchrones

Process::start() lance un processus asynchrone. Vous pouvez continuer d’autres traitements en parallèle.

PID et signaux

id() retourne le PID.
signal() envoie un signal.

Sortie asynchrone

latestOutput() et latestErrorOutput() retournent le delta depuis le dernier appel.
waitUntil() attend une sortie spécifique.

Vérifier le timeout

ensureNotTimedOut() lève une exception si le processus dépasse le timeout.

Processus parallèles

Process::pool() exécute plusieurs processus en parallèle.
concurrently() fait le tout en une ligne.

Nommer les processus

as() nomme les processus dans le pool.
Signal envoyé à tout le pool :

Tests

Faker de processus

Process::fake() évite d’exécuter réellement les commandes en test.
Vous pouvez définir sortie et code de retour.

Faker une commande précise

Séquence de retours

Pour retourner des résultats différents à chaque appel :

Assertions

Empêcher les processus non prévus

Process::preventStrayProcesses() lance une exception si une commande sans fake est exécutée.

Pages associées

Console Artisan

Créez des commandes personnalisées qui invoquent des processus.

Queues

Comparaison avec le traitement asynchrone.
Dernière modification le 13 juillet 2026