Process is a thin wrapper around proc_* functions to easily
start independent PHP processes.
- author Fabien Potencier
- author Romain Neutron
- implements \IteratorAggregate<string, string>
- Children
- Implements
IteratorAggregate Traversable
Constants |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
public Symfony |
Properties |
public static $exitCodes = ['OK', 'General error', 'Misuse of shell builtins', 126 => 'Invoked command cannot execute', 127 => 'Command not found', 128 => 'Invalid exit argument', 129 => 'Hangup', 130 => 'Interrupt', 131 => 'Quit and dump core', 132 => 'Illegal instruction', 133 => 'Trace/breakpoint trap', 134 => 'Process aborted', 135 => 'Bus error: "access to undefined portion of memory object"', 136 => 'Floating point exception: "erroneous arithmetic operation"', 137 => 'Kill (terminate immediately)', 138 => 'User-defined 1', 139 => 'Segmentation violation', 140 => 'User-defined 2', 141 => 'Write to pipe with no one reading', 142 => 'Signal raised by alarm', 143 => 'Termination (request to terminate)', 145 => 'Child process terminated, stopped (or continued*)', 146 => 'Continue if stopped', 147 => 'Stop executing temporarily', 148 => 'Terminal stop signal', 149 => 'Background process attempting to read from tty ("in")', 150 => 'Background process attempting to write to tty ("out")', 151 => 'Urgent data available on socket', 152 => 'CPU time limit exceeded', 153 => 'File size limit exceeded', 154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', 155 => 'Profiling timer expired', 157 => 'Pollable event', 159 => 'Bad syscall'] Exit codes translation table. User-defined errors must use exit codes in the 64-113 range. |
Methods |
public __clone() |
public __construct(array $command, ?string $cwd = NULL, ?array $env = NULL, ?mixed $input = NULL, ?float $timeout = 60)
|
public __destruct() |
public __sleep() : array |
public __wakeup() |
public addErrorOutput(string $line) : void Adds a line to the STDERR stream.
|
public addOutput(string $line) : void Adds a line to the STDOUT stream.
|
public checkTimeout() Performs a check between the timeout definition and the time the process started. In case you run a background process (with the start method), you should
|
public clearErrorOutput() : static Clears the process output.
|
public clearOutput() : static Clears the process output.
|
public disableOutput() : static Disables fetching output and error output from the underlying process.
|
public enableOutput() : static Enables fetching output and error output from the underlying process.
|
public static fromShellCommandline(string $command, ?string $cwd = NULL, ?array $env = NULL, ?mixed $input = NULL, ?float $timeout = 60) : static Creates a Process instance as a command-line to be run in a shell wrapper. Command-lines are parsed by the shell of your OS (/bin/sh on Unix-like, cmd.exe on Windows.) In order to inject dynamic values into command-lines, we strongly recommend using placeholders. $process = Process::fromShellCommandline('my_command "${:MY_VAR}"');
|
public getCommandLine() : string Gets the command line to be executed. |
public getEnv() : array Gets the environment variables. |
public getErrorOutput() : string Returns the current error output of the process (STDERR).
|
public getExitCode() : ?int Returns the exit code returned by the process.
|
public getExitCodeText() : ?string Returns a string representation for the exit code returned by the process. This method relies on the Unix exit code status standardization
|
public getIdleTimeout() : ?float Gets the process idle timeout in seconds (max. time since last output). |
public getIncrementalErrorOutput() : string Returns the errorOutput incrementally. In comparison with the getErrorOutput method which always return the
|
public getIncrementalOutput() : string Returns the output incrementally. In comparison with the getOutput method which always return the whole
|
public getInput() Gets the Process input.
|
public getIterator(int $flags = 0) : Generator Returns an iterator to the output of the process, with the output type as keys (Process::OUT/ERR).
|
public getLastOutputTime() : ?float Gets the last output time in seconds. |
public getOutput() : string Returns the current output of the process (STDOUT).
|
public getPid() : ?int Returns the Pid (process identifier), if applicable.
|
public getStartTime() : float
|
public getStatus() : string Gets the process status. The status is one of: ready, started, terminated. |
public getStopSignal() : int Returns the number of the signal that caused the child process to stop its execution. It is only meaningful if hasBeenStopped() returns true.
|
public getTermSignal() : int Returns the number of the signal that caused the child process to terminate its execution. It is only meaningful if hasBeenSignaled() returns true.
|
public getTimeout() : ?float Gets the process timeout in seconds (max. runtime). |
public getWorkingDirectory() : ?string Gets the working directory. |
public hasBeenSignaled() : bool Returns true if the child process has been terminated by an uncaught signal. It always returns false on Windows.
|
public hasBeenStopped() : bool Returns true if the child process has been stopped by a signal. It always returns false on Windows.
|
public isOutputDisabled() : bool Returns true in case the output is disabled, false otherwise. |
public isPty() : bool Returns PTY state. |
public static isPtySupported() : bool Returns whether PTY is supported on the current operating system. |
public isRunning() : bool Checks if the process is currently running. |
public isStarted() : bool Checks if the process has been started with no regard to the current state. |
public isSuccessful() : bool Checks if the process ended successfully. |
public isTerminated() : bool Checks if the process is terminated. |
public isTty() : bool Checks if the TTY mode is enabled. |
public static isTtySupported() : bool Returns whether TTY is supported on the current operating system. |
public mustRun(?callable $callback = NULL, array $env = []) : static Runs the process. This is identical to run() except that an exception is thrown if the process
|
public restart(?callable $callback = NULL, array $env = []) : static Restarts the process. Be warned that the process is cloned before being started.
|
public run(?callable $callback = NULL, array $env = []) : int Runs the process. The callback receives the type of output (out or err) and The STDOUT and STDERR are also available after the process is finished
|
public setEnv(array $env) : static Sets the environment variables.
|
public setIdleTimeout(?float $timeout) : static Sets the process idle timeout (max. time since last output) in seconds. To disable the timeout, set this value to null.
|
public setInput(?mixed $input) : static Sets the input. This content will be passed to the underlying process standard input.
|
public setOptions(array $options) Defines options to pass to the underlying proc_open().
|
public setPty(bool $bool) : static Sets PTY mode.
|
public setTimeout(?float $timeout) : static Sets the process timeout (max. runtime) in seconds. To disable the timeout, set this value to null.
|
public setTty(bool $tty) : static Enables or disables the TTY mode.
|
public setWorkingDirectory(string $cwd) : static Sets the current working directory.
|
public signal(int $signal) : static Sends a POSIX signal to the process.
|
public start(?callable $callback = NULL, array $env = []) Starts the process and returns after writing the input to STDIN. This method blocks until all STDIN data is sent to the process then it The termination of the process can be awaited with wait(). The callback receives the type of output (out or err) and some bytes from
|
public stop(float $timeout = 10, ?int $signal = NULL) : ?int Stops the process.
|
public wait(?callable $callback = NULL) : int Waits for the process to terminate. The callback receives the type of output (out or err) and some bytes
|
public waitUntil(callable $callback) : bool Waits until the callback returns true. The callback receives the type of output (out or err) and some bytes
|
Methods |
protected buildCallback(?callable $callback = NULL) : Closure Builds up the callback used by wait(). The callbacks adds all occurred output to the specific buffer and calls
|
protected isSigchildEnabled() : bool Returns whether PHP has been compiled with the '--enable-sigchild' option or not. |
protected updateStatus(bool $blocking) Updates the status of the process, reads pipes.
|
Properties |
private $callback = NULL |
private $commandline = NULL |
private $cwd = NULL |
private $env = [] |
private $exitcode = NULL |
private $fallbackStatus = [] |
private $hasCallback = false |
private $idleTimeout = NULL |
private $incrementalErrorOutputOffset = 0 |
private $incrementalOutputOffset = 0 |
private $input = NULL |
private $lastOutputTime = NULL |
private $latestSignal = NULL |
private $options = ['suppress_errors' => true, 'bypass_shell' => true] |
private $outputDisabled = false |
private $process = NULL |
private $processInformation = NULL |
private $processPipes = NULL
|
private $pty = NULL |
private static $sigchild = NULL |
private $starttime = NULL |
private $status = 'ready' |
private $stderr = NULL |
private $stdout = NULL |
private $timeout = NULL |
private $tty = false |
private $useFileHandles = false |
Methods |
private close() : int Closes process resource, closes file handles, sets the exitcode.
|
private doSignal(int $signal, bool $throwException) : bool Sends a POSIX signal to the process.
|
private escapeArgument(?string $argument) : string Escapes a string to be used as a shell argument. |
private getDefaultEnv() : array |
private getDescriptors() : array Creates the descriptors needed by the proc_open. |
private prepareWindowsCommandLine(string $cmd, array $env) : string |
private readPipes(bool $blocking, bool $close) : void Reads pipes, executes callback.
|
private readPipesForOutput(string $caller, bool $blocking = false) : void Reads pipes for the freshest output.
|
private replacePlaceholders(string $commandline, array $env) : string |
private requireProcessIsStarted(string $functionName) : void Ensures the process is running or terminated, throws a LogicException if the process has a not started.
|
private requireProcessIsTerminated(string $functionName) : void Ensures the process is terminated, throws a LogicException if the process has a status different than "terminated".
|
private resetProcessData() : void Resets data related to the latest run of the process. |
private validateTimeout(?float $timeout) : ?float Validates and returns the filtered timeout.
|
Properties |
public static $exitCodes = ['OK', 'General error', 'Misuse of shell builtins', 126 => 'Invoked command cannot execute', 127 => 'Command not found', 128 => 'Invalid exit argument', 129 => 'Hangup', 130 => 'Interrupt', 131 => 'Quit and dump core', 132 => 'Illegal instruction', 133 => 'Trace/breakpoint trap', 134 => 'Process aborted', 135 => 'Bus error: "access to undefined portion of memory object"', 136 => 'Floating point exception: "erroneous arithmetic operation"', 137 => 'Kill (terminate immediately)', 138 => 'User-defined 1', 139 => 'Segmentation violation', 140 => 'User-defined 2', 141 => 'Write to pipe with no one reading', 142 => 'Signal raised by alarm', 143 => 'Termination (request to terminate)', 145 => 'Child process terminated, stopped (or continued*)', 146 => 'Continue if stopped', 147 => 'Stop executing temporarily', 148 => 'Terminal stop signal', 149 => 'Background process attempting to read from tty ("in")', 150 => 'Background process attempting to write to tty ("out")', 151 => 'Urgent data available on socket', 152 => 'CPU time limit exceeded', 153 => 'File size limit exceeded', 154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', 155 => 'Profiling timer expired', 157 => 'Pollable event', 159 => 'Bad syscall'] Exit codes translation table. User-defined errors must use exit codes in the 64-113 range. |
private static $sigchild = NULL |
Methods |
public static fromShellCommandline(string $command, ?string $cwd = NULL, ?array $env = NULL, ?mixed $input = NULL, ?float $timeout = 60) : static Creates a Process instance as a command-line to be run in a shell wrapper. Command-lines are parsed by the shell of your OS (/bin/sh on Unix-like, cmd.exe on Windows.) In order to inject dynamic values into command-lines, we strongly recommend using placeholders. $process = Process::fromShellCommandline('my_command "${:MY_VAR}"');
|
public static isPtySupported() : bool Returns whether PTY is supported on the current operating system. |
public static isTtySupported() : bool Returns whether TTY is supported on the current operating system. |