Einführung
Die Process-Fassade von Laravel ist ein schlanker Wrapper um die Symfony-Process-Komponente. Sie bietet eine knappe API, um aus einer Laravel-Anwendung heraus Shell-Kommandos aufzurufen und deren Ergebnisse zu verarbeiten.Prozesse starten
MitProcess::run() führen Sie ein Kommando synchron aus und erhalten das Ergebnis.
ProcessResult-Instanz stellt verschiedene Methoden bereit, um das Ergebnis zu prüfen.
Bei Fehler eine Exception werfen
Um bei einem Exit-Code größer als 0 die AusnahmeIlluminate\Process\Exceptions\ProcessFailedException auszulösen, verwenden Sie throw() bzw. throwIf().
Prozessoptionen
Arbeitsverzeichnis
Mitpath() geben Sie das Arbeitsverzeichnis an. Ohne Angabe wird das aktuelle Arbeitsverzeichnis des PHP-Skripts verwendet.
Standardeingabe
Mitinput() übergeben Sie Daten an die Standardeingabe des Prozesses.
Timeout
Standard sind 60 Sekunden. Mittimeout() ändern Sie den Wert. Bei einem Timeout wird der Prozess abgebrochen und ProcessTimedOutException geworfen.
CarbonInterval-Helferfunktionen sind nutzbar.
forever().
Umgebungsvariablen
Mitenv() fügen Sie Umgebungsvariablen hinzu oder überschreiben sie. Die Systemvariablen werden automatisch geerbt.
false.
Ausgabe unterdrücken
Wenn große Ausgaben nicht benötigt werden, sparen Sie mitquietly() Speicher.
Ausgabe in Echtzeit
Übergeben Sierun() eine Closure als zweites Argument, erhalten Sie die Ausgabe in Echtzeit.
Pipelines
MitProcess::pipe() verknüpfen Sie die Ausgabe eines Kommandos mit der Eingabe des nächsten.
as() einen Schlüssel geben, können Sie in der Ausgabe-Closure erkennen, welcher Prozess die Ausgabe erzeugt hat.
Asynchrone Prozesse
MitProcess::start() starten Sie einen Prozess asynchron. Während der Prozess läuft, kann die Anwendung anderen Aufgaben nachgehen.
Prozess-ID und Signale
Mitid() erhalten Sie die Prozess-ID des laufenden Prozesses.
signal() senden Sie ein Signal an den Prozess.
Ausgabe eines asynchronen Prozesses
Während der Ausführung liefernlatestOutput() und latestErrorOutput() die seit dem letzten Abruf entstandene Ausgabe.
waitUntil().
Timeout in asynchronen Prozessen prüfen
Rufen Sie in SchleifenensureNotTimedOut() auf, um bei einem Timeout eine Exception zu erhalten.
Parallele Prozesse
MitProcess::pool() führen Sie mehrere Prozesse parallel aus.
concurrently() schreiben Sie „Pool sofort starten und auf Ergebnisse warten“ in einer Zeile.
Prozessen Namen geben
Mitas() weisen Sie jedem Prozess einen String-Schlüssel zu, sodass Ergebnisse eindeutig zugänglich sind.
Tests
Prozesse faken
MitProcess::fake() testen Sie, ohne dass echte Shell-Kommandos ausgeführt werden.
Bestimmte Kommandos faken
Über Wildcards oder konkrete Kommando-Strings als Schlüssel legen Sie individuelle Fakes fest.Sequenzen faken
Wenn dasselbe Kommando mehrfach aufgerufen wird, geben Sie die Reihenfolge der Ergebnisse an.Assertions
| Methode | Beschreibung |
|---|---|
Process::assertRan('command') | Prüft, dass ein Kommando ausgeführt wurde |
Process::assertNotRan('command') | Prüft, dass ein Kommando nicht ausgeführt wurde |
Process::assertRan(fn) | Detaillierte Prüfung über eine Closure |
Process::assertRanTimes('command', 3) | Prüft, dass ein Kommando N-mal ausgeführt wurde |
Unerwartete Prozesse verhindern
MitProcess::preventStrayProcesses() wird eine Exception geworfen, sobald ein Kommando ausgeführt wird, für das kein Fake definiert wurde.
Verwandte Seiten
Artisan-Konsole
Eigene Kommandos erstellen und Prozesse aufrufen
Queues
Vergleich zu asynchroner Verarbeitung