Skip to main content

Inleiding

De Process-facade van Laravel is een dunne wrapper rond de Symfony Process-component. Hij biedt een beknopte API om shellcommando’s vanuit je Laravel-applicatie aan te roepen en de resultaten te verwerken.

Een proces starten

Met Process::run() voer je een commando synchroon uit en haal je het resultaat op.
De ProcessResult-instantie biedt diverse methodes om het resultaat te inspecteren.

Een exception gooien bij falen

Om een Illuminate\Process\Exceptions\ProcessFailedException te laten gooien wanneer de exitcode groter is dan 0, gebruik je throw() of throwIf().

Procesopties

Werkdirectory

Met path() geef je de werkdirectory op. Laat je die weg, dan wordt de werkdirectory van het huidige PHP-script gebruikt.

Standaardinvoer

Met input() geef je data door aan de standaardinvoer van het proces.

Timeout

De standaard is 60 seconden. Met timeout() wijzig je die. Bij een timeout wordt het proces afgebroken en wordt een ProcessTimedOutException gegooid.
Je kunt ook de CarbonInterval-helperfuncties gebruiken.
Gebruik forever() om de timeout uit te schakelen.
Je kunt ook een idle-timeout instellen (het aantal seconden zonder uitvoer).

Omgevingsvariabelen

Met env() voeg je omgevingsvariabelen toe of overschrijf je ze. De omgevingsvariabelen van het systeem worden automatisch overgenomen.
Om een overgenomen variabele uit te sluiten, geef je false op.

Uitvoer uitschakelen

Heb je geen grote hoeveelheden uitvoer nodig, dan beperk je met quietly() het geheugengebruik.

Realtime uitvoer

Geef je een closure door als tweede argument van run(), dan ontvang je de uitvoer in realtime.

Pipelines

Met Process::pipe() geef je de uitvoer van een commando door als invoer voor het volgende commando.
Je kunt ook een array van commandostrings doorgeven.
Geef je elk proces met as() een sleutel, dan kun je in de uitvoerclosure bepalen van welk proces de uitvoer komt.

Asynchrone processen

Met Process::start() start je een proces asynchroon. Terwijl het proces draait, kan je applicatie andere taken blijven uitvoeren.

Proces-ID en signalen

Met id() haal je het OS-proces-ID van een lopend proces op.
Met signal() stuur je een signaal naar het proces.

Uitvoer van asynchrone processen

Gebruik je tijdens de uitvoering latestOutput() en latestErrorOutput(), dan haal je de nieuwe uitvoer op sinds de vorige keer dat je die ophaalde.
Gebruik waitUntil() om te wachten tot bepaalde uitvoer verschijnt.

Timeout controleren bij asynchrone processen

Roep je in de lus ensureNotTimedOut() aan, dan wordt een exception gegooid als het proces een timeout heeft bereikt.

Gelijktijdige processen

Met Process::pool() voer je meerdere processen gelijktijdig uit.
Met concurrently() schrijf je het direct starten van een pool en het wachten op de resultaten in één regel.

Processen een naam geven

Geef je elk proces met as() een stringsleutel, dan wordt het ophalen van de resultaten duidelijker.
Je kunt ook een signaal naar de hele pool sturen.

Testen

Processen faken

Met Process::fake() test je zonder daadwerkelijk shellcommando’s uit te voeren.
Je kunt ook uitvoer en exitcodes opgeven.

Specifieke commando’s faken

Met wildcards of commandostrings als sleutel kun je fakes per commando instellen.

Sequenties faken

Wanneer hetzelfde commando meerdere keren wordt aangeroepen, kun je de volgorde van de teruggegeven resultaten opgeven.

Assertions

Onverwachte processen voorkomen

Roep je Process::preventStrayProcesses() aan, dan wordt een exception gegooid wanneer een commando wordt uitgevoerd waarvoor geen fake is ingesteld.

Gerelateerde pagina’s

Artisan-console

Maak eigen commando’s en roep processen aan

Queues

Vergelijking met asynchrone verwerking
Laatst gewijzigd op 6 september 2026