Skip to main content

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

Mit Process::run() führen Sie ein Kommando synchron aus und erhalten das Ergebnis.
Die 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 Ausnahme Illuminate\Process\Exceptions\ProcessFailedException auszulösen, verwenden Sie throw() bzw. throwIf().

Prozessoptionen

Arbeitsverzeichnis

Mit path() geben Sie das Arbeitsverzeichnis an. Ohne Angabe wird das aktuelle Arbeitsverzeichnis des PHP-Skripts verwendet.

Standardeingabe

Mit input() übergeben Sie Daten an die Standardeingabe des Prozesses.

Timeout

Standard sind 60 Sekunden. Mit timeout() ändern Sie den Wert. Bei einem Timeout wird der Prozess abgebrochen und ProcessTimedOutException geworfen.
Auch die CarbonInterval-Helferfunktionen sind nutzbar.
Um das Timeout ganz zu deaktivieren, verwenden Sie forever().
Sie können auch ein Idle-Timeout festlegen (Sekunden ohne Ausgabe).

Umgebungsvariablen

Mit env() fügen Sie Umgebungsvariablen hinzu oder überschreiben sie. Die Systemvariablen werden automatisch geerbt.
Um eine geerbte Variable auszuschließen, setzen Sie sie auf false.

Ausgabe unterdrücken

Wenn große Ausgaben nicht benötigt werden, sparen Sie mit quietly() Speicher.

Ausgabe in Echtzeit

Übergeben Sie run() eine Closure als zweites Argument, erhalten Sie die Ausgabe in Echtzeit.

Pipelines

Mit Process::pipe() verknüpfen Sie die Ausgabe eines Kommandos mit der Eingabe des nächsten.
Sie können auch ein Array mit Kommando-Strings übergeben.
Wenn Sie jedem Prozess mit as() einen Schlüssel geben, können Sie in der Ausgabe-Closure erkennen, welcher Prozess die Ausgabe erzeugt hat.

Asynchrone Prozesse

Mit Process::start() starten Sie einen Prozess asynchron. Während der Prozess läuft, kann die Anwendung anderen Aufgaben nachgehen.

Prozess-ID und Signale

Mit id() erhalten Sie die Prozess-ID des laufenden Prozesses.
Mit signal() senden Sie ein Signal an den Prozess.

Ausgabe eines asynchronen Prozesses

Während der Ausführung liefern latestOutput() und latestErrorOutput() die seit dem letzten Abruf entstandene Ausgabe.
Um zu warten, bis eine bestimmte Ausgabe erscheint, verwenden Sie waitUntil().

Timeout in asynchronen Prozessen prüfen

Rufen Sie in Schleifen ensureNotTimedOut() auf, um bei einem Timeout eine Exception zu erhalten.

Parallele Prozesse

Mit Process::pool() führen Sie mehrere Prozesse parallel aus.
Mit concurrently() schreiben Sie „Pool sofort starten und auf Ergebnisse warten“ in einer Zeile.

Prozessen Namen geben

Mit as() weisen Sie jedem Prozess einen String-Schlüssel zu, sodass Ergebnisse eindeutig zugänglich sind.
Sie können auch an den gesamten Pool ein Signal senden.

Tests

Prozesse faken

Mit Process::fake() testen Sie, ohne dass echte Shell-Kommandos ausgeführt werden.
Ausgabe und Exit-Code lassen sich vorgeben.

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

Unerwartete Prozesse verhindern

Mit Process::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
Zuletzt geändert am 13. Juli 2026