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
MetProcess::run() voer je een commando synchroon uit en haal je het resultaat op.
ProcessResult-instantie biedt diverse methodes om het resultaat te inspecteren.
Een exception gooien bij falen
Om eenIlluminate\Process\Exceptions\ProcessFailedException te laten gooien wanneer de exitcode groter is dan 0, gebruik je throw() of throwIf().
Procesopties
Werkdirectory
Metpath() geef je de werkdirectory op. Laat je die weg, dan wordt de werkdirectory van het huidige PHP-script gebruikt.
Standaardinvoer
Metinput() geef je data door aan de standaardinvoer van het proces.
Timeout
De standaard is 60 seconden. Mettimeout() wijzig je die. Bij een timeout wordt het proces afgebroken en wordt een ProcessTimedOutException gegooid.
CarbonInterval-helperfuncties gebruiken.
forever() om de timeout uit te schakelen.
Omgevingsvariabelen
Metenv() voeg je omgevingsvariabelen toe of overschrijf je ze. De omgevingsvariabelen van het systeem worden automatisch overgenomen.
false op.
Uitvoer uitschakelen
Heb je geen grote hoeveelheden uitvoer nodig, dan beperk je metquietly() het geheugengebruik.
Realtime uitvoer
Geef je een closure door als tweede argument vanrun(), dan ontvang je de uitvoer in realtime.
Pipelines
MetProcess::pipe() geef je de uitvoer van een commando door als invoer voor het volgende commando.
as() een sleutel, dan kun je in de uitvoerclosure bepalen van welk proces de uitvoer komt.
Asynchrone processen
MetProcess::start() start je een proces asynchroon. Terwijl het proces draait, kan je applicatie andere taken blijven uitvoeren.
Proces-ID en signalen
Metid() haal je het OS-proces-ID van een lopend proces op.
signal() stuur je een signaal naar het proces.
Uitvoer van asynchrone processen
Gebruik je tijdens de uitvoeringlatestOutput() en latestErrorOutput(), dan haal je de nieuwe uitvoer op sinds de vorige keer dat je die ophaalde.
waitUntil() om te wachten tot bepaalde uitvoer verschijnt.
Timeout controleren bij asynchrone processen
Roep je in de lusensureNotTimedOut() aan, dan wordt een exception gegooid als het proces een timeout heeft bereikt.
Gelijktijdige processen
MetProcess::pool() voer je meerdere processen gelijktijdig uit.
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 metas() een stringsleutel, dan wordt het ophalen van de resultaten duidelijker.
Testen
Processen faken
MetProcess::fake() test je zonder daadwerkelijk shellcommando’s uit te voeren.
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 jeProcess::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