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.
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 avectimeout(). En cas de timeout, ProcessTimedOutException est levée.
CarbonInterval.
forever().
Variables d’environnement
env() ajoute ou surcharge les variables. Les variables système sont héritées automatiquement.
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.
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.
Tests
Faker de processus
Process::fake() évite d’exécuter réellement les commandes en test.
Faker une commande précise
Séquence de retours
Pour retourner des résultats différents à chaque appel :Assertions
| Méthode | Description |
|---|---|
Process::assertRan('command') | La commande a été exécutée |
Process::assertNotRan('command') | La commande n’a pas été exécutée |
Process::assertRan(fn) | Vérification détaillée via closure |
Process::assertRanTimes('command', 3) | N fois exécutée |
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.