PhpProcess
class PhpProcess extends Process
PhpProcess выполняет скрипт PHP в отдельном процессе.
$p = new PhpProcess(''); $p->run(); print $p->getOutput()."\n";
Константы
| ERR | |
| OUT | |
| STATUS_READY | |
| STATUS_STARTED | |
| STATUS_TERMINATED | |
| STDIN | |
| STDOUT | |
| STDERR | |
| TIMEOUT_PRECISION | |
| ITER_NON_BLOCKING | |
| ITER_KEEP_OUTPUT | |
| ITER_SKIP_OUT | |
| ITER_SKIP_ERR |
Свойства
| static | $exitCodes | Таблица преобразования кодов выхода. | из Process |
Методы
| __construct(string $script, string $cwd = null, array $env = null, float|null $timeout = 60) | ||
| __destruct() | из Process | |
| __clone() | из Process | |
| int | run(callable $callback = null, array $env = array()) Выполняет процесс. | из Process |
| Process | mustRun(callable $callback = null, array $env = array()) Выполняет процесс. | из Process |
| start(callable $callback = null, array $env = array()) Запускает процесс и возвращается после записи входных данных в STDIN. | ||
| $this | restart(callable $callback = null, array $env = array()) Перезапускает процесс. | из Process |
| int | wait(callable $callback = null) Ожидает завершения процесса. | из Process |
| int|null | getPid() Возвращает идентификатор процесса (Pid), если применимо. | из Process |
| $this | signal(int $signal) Отправляет POSIX-сигнал процессу. | из Process |
| $this | disableOutput() Отключает получение вывода и вывода ошибок из основного процесса. | из Process |
| $this | enableOutput() Включает получение вывода и вывода ошибок из основного процесса. | из Process |
| bool | isOutputDisabled() Возвращает true, если вывод отключен, и false в противном случае. | из Process |
| string | getOutput() Возвращает текущий вывод процесса (STDOUT). | из Process |
| string | getIncrementalOutput() Возвращает вывод по частям. | из Process |
| Generator | getIterator(int $flags = 0) Возвращает итератор для вывода процесса, с типом вывода в качестве ключей (Process::OUT/ERR). | из Process |
| $this | clearOutput() Очищает вывод процесса. | из Process |
| string | getErrorOutput() Возвращает текущий вывод ошибок процесса (STDERR). | из Process |
| string | getIncrementalErrorOutput() Возвращает вывод ошибок по частям. | из Process |
| $this | clearErrorOutput() Очищает вывод процесса. | из Process |
| int|null | getExitCode() Возвращает код выхода, возвращённый процессом. | из Process |
| string|null | getExitCodeText() Возвращает строковое представление кода выхода, возвращённого процессом. | из Process |
| bool | isSuccessful() Проверяет, завершился ли процесс успешно. | из Process |
| bool | hasBeenSignaled() Возвращает true, если дочерний процесс был завершен неуловленным сигналом. | из Process |
| int | getTermSignal() Возвращает номер сигнала, который привел к завершению выполнения дочернего процесса. | из Process |
| bool | hasBeenStopped() Возвращает true, если дочерний процесс был остановлен сигналом. | из Process |
| int | getStopSignal() Возвращает номер сигнала, который привел к остановке выполнения дочернего процесса. | из Process |
| bool | isRunning() Проверяет, запущен ли процесс в данный момент. | из Process |
| bool | isStarted() Проверяет, был ли запущен процесс, не обращая внимания на текущее состояние. | из Process |
| bool | isTerminated() Проверяет, завершен ли процесс. | из Process |
| string | getStatus() Получает состояние процесса. | из Process |
| int | stop(int|float $timeout = 10, int $signal = null) Останавливает процесс. | из Process |
| addOutput(string $line) Добавляет строку в поток STDOUT. | из Process | |
| addErrorOutput(string $line) Добавляет строку в поток STDERR. | from Process | |
| string | getCommandLine() Получает командную строку для выполнения. | from Process |
| Process | setCommandLine(string|array $commandline) Устанавливает командную строку для выполнения. | из Process |
| float|null | getTimeout() Получает таймаут процесса (максимальное время выполнения). | из Process |
| float|null | getIdleTimeout() Получает таймаут бездействия процесса (максимальное время с момента последнего вывода). | из Process |
| Process | setTimeout(int|float|null $timeout) Устанавливает таймаут процесса (максимальное время выполнения). | из Process |
| Process | setIdleTimeout(int|float|null $timeout) Устанавливает таймаут бездействия процесса (максимальное время с момента последнего вывода). | из Process |
| Process | setTty(bool $tty) Включает или отключает режим TTY. | из Process |
| bool | isTty() Проверяет, включен ли режим TTY. | из Process |
| Process | setPty(bool $bool) Устанавливает режим PTY. | из Process |
| bool | isPty() Возвращает состояние PTY. | из Process |
| строка|null | getWorkingDirectory() Получает рабочую директорию. | из Process |
| Process | setWorkingDirectory(string $cwd) Устанавливает текущую рабочую директорию. | из Process |
| массив | getEnv() Получает переменные окружения. | из Process |
| Process | setEnv(array $env) Устанавливает переменные окружения. | из Process |
| ресурс|строка|Iterator|null | getInput() Получает входные данные процесса. | из Process |
| Process | setInput(string|int|float|bool|resource|Traversable|null $input) Устанавливает входные данные. | из Process |
| Process | inheritEnvironmentVariables(bool $inheritEnv = true) Устанавливает, будут ли унаследованы переменные окружения или нет. | из Process |
| checkTimeout() Выполняет проверку между определением таймаута и временем запуска процесса. | из Process | |
| статический bool | isTtySupported() Возвращает, поддерживается ли TTY в текущей операционной системе. | из Process |
| статический bool | isPtySupported() Возвращает, поддерживается ли PTY в текущей операционной системе. | из Process |
| Closure | buildCallback(callable $callback = null) Создаёт обратный вызов, используемый методом wait(). | из Process |
| updateStatus(bool $blocking) Обновляет статус процесса, считывает потоки. | из Process | |
| bool | isSigchildEnabled() Возвращает, был ли PHP скомпилирован с опцией '--enable-sigchild' или нет. | из Process |
| setPhpBinary($php) Устанавливает путь к бинарному файлу PHP, который следует использовать. |
Подробное описание
__construct(string $script, string $cwd = null, array $env = null, float|null $timeout = 60)
Параметры
| string | $script | Скрипт PHP для выполнения (в виде строки) |
| string | $cwd | Рабочая директория или null для использования рабочей директории текущего процесса PHP |
| array | $env | Переменные окружения или null для использования тех же переменных окружения, что и текущий процесс PHP |
| float|null | $timeout | Таймаут в секундах или null для отключения |
__destruct()
__clone()
int run(callable $callback = null, array $env = array())
Выполняет процесс.
Обратный вызов получает тип вывода (out или err) и некоторые байты из вывода в реальном времени. Это позволяет получать обратную связь от независимого процесса во время выполнения.
STDOUT и STDERR также доступны после завершения процесса через методы getOutput() и getErrorOutput().
Параметры
| callable | $callback | Обратный вызов PHP, который будет выполняться всякий раз, когда появляется некоторый вывод в STDOUT или STDERR |
| array | $env | Массив дополнительных переменных среды для установки при выполнении процесса |
Значение возврата
| int | Код возврата процесса |
Исключения
| RuntimeException | Если процесс невозможно запустить |
| RuntimeException | Если процесс остановлен после получения сигнала |
| LogicException | В случае, если предоставлен обратный вызов, а вывод отключен |
Process mustRun(callable $callback = null, array $env = array())
Выполняет процесс.
Это идентично run(), за исключением того, что исключение генерируется, если процесс завершается с кодом возврата не равным нулю.
Параметры
| callable | $callback | |
| array | $env | Массив дополнительных переменных окружения для установки при запуске процесса |
Значение возврата
| Process |
Исключения
| ProcessFailedException | если процесс не завершился успешно |
start(callable $callback = null, array $env = array())
Запускает процесс и возвращается после записи входных данных в STDIN.
Этот метод блокируется до тех пор, пока все данные STDIN не будут отправлены в процесс, а затем возвращается, в то время как процесс выполняется в фоновом режиме.
Завершение процесса можно ожидать с помощью wait().
Обратный вызов получает тип вывода (out или err) и некоторые байты из вывода в реальном времени при записи стандартного ввода в процесс. Это позволяет получать обратную связь от независимого процесса во время выполнения.
Параметры
| callable | $callback | Обратный вызов PHP, который будет выполняться всякий раз, когда появляется некоторый вывод в STDOUT или STDERR |
| array | $env | Массив дополнительных переменных среды для установки при запуске процесса |
Исключения
| RuntimeException | Если процесс невозможно запустить |
| RuntimeException | Если процесс уже запущен |
| LogicException | В случае, если предоставлен обратный вызов и вывод отключен |
$this restart(callable $callback = null, array $env = array())
Перезапускает процесс.
Обратите внимание, что процесс клонируется перед запуском.
Параметры
| callable | $callback | Обратный вызов PHP, который будет выполняться всякий раз, когда появляется некоторый вывод в STDOUT или STDERR |
| array | $env | Массив дополнительных переменных среды для установки при запуске процесса |
Значение возврата
| $this |
Исключения
| RuntimeException | Если процесс невозможно запустить |
| RuntimeException | Если процесс уже запущен |
См. также
| start() |
int wait(callable $callback = null)
Ожидает завершения процесса.
Обратный вызов получает тип вывода (out или err) и некоторые байты из вывода в реальном времени.
Параметры
| callable | $callback | Действительный PHP обратный вызов |
Значение возврата
| int | Код завершения процесса |
Исключения
| RuntimeException | Если процесс превысил время ожидания |
| RuntimeException | Если процесс остановлен после получения сигнала |
| LogicException | Если процесс еще не запущен |
int|null getPid()
Возвращает PID (идентификатор процесса), если применимо.
Значение возврата
| int|null | Идентификатор процесса, если запущен, иначе null |
$this signal(int $signal)
Отправляет POSIX сигнал процессу.
Параметры
| int | $signal | Действительный POSIX сигнал (см. http://www.php.net/manual/en/pcntl.constants.php) |
Значение возврата
| $this |
Исключения
| LogicException | В случае, если процесс не запущен |
| RuntimeException | В случае активации --enable-sigchild и процесс не может быть убит |
| RuntimeException | В случае неудачи |
$this disableOutput()
Отключает получение вывода и вывода ошибок от базового процесса.
Значение возврата
| $this |
Исключения
| RuntimeException | Если процесс уже запущен |
| LogicException | если установлен таймаут бездействия |
$this enableOutput()
Включает получение вывода и вывода ошибок от базового процесса.
Значение возврата
| $this |
Исключения
| RuntimeException | Если процесс уже запущен |
bool isOutputDisabled()
Возвращает true, если вывод отключен, в противном случае false.
Значение возврата
| bool |
string getOutput()
Возвращает текущий вывод процесса (STDOUT).
Значение возврата
| string | Вывод процесса |
Исключения
| LogicException | в случае, если вывод был отключен |
| LogicException | В случае, если процесс не запущен |
string getIncrementalOutput()
Возвращает вывод по частям.
В сравнении с методом getOutput, который всегда возвращает весь вывод, этот метод возвращает только новый вывод с последнего вызова.
Значение возврата
| string | Вывод процесса с момента последнего вызова |
Исключения
| LogicException | в случае, если вывод был отключен |
| LogicException | В случае, если процесс не запущен |
Генератор getIterator(int $flags = 0)
Возвращает итератор на вывод процесса, с типом вывода в качестве ключей (Process::OUT/ERR).
Параметры
| int | $flags | Поле флагов Process::ITER_* |
Значение результата
| Generator |
Исключения
| LogicException | в случае, если вывод был отключен |
| LogicException | В случае, если процесс не запущен |
$this clearOutput()
Очищает вывод процесса.
Значение результата
| $this |
string getErrorOutput()
Возвращает текущий вывод ошибок процесса (STDERR).
Значение результата
| string | Вывод ошибок процесса |
Исключения
| LogicException | в случае, если вывод был отключен |
| LogicException | В случае, если процесс не запущен |
string getIncrementalErrorOutput()
Возвращает вывод ошибок постепенно.
В сравнении с методом getErrorOutput, который всегда возвращает весь вывод ошибок, этот метод возвращает только новые данные ошибок с момента последнего вызова.
Значение результата
| string | Вывод ошибок процесса с момента последнего вызова |
Исключения
| LogicException | в случае, если вывод был отключен |
| LogicException | В случае, если процесс не запущен |
$this clearErrorOutput()
Очищает вывод процесса.
Значение результата
| $this |
int|null getExitCode()
Возвращает код выхода, возвращенный процессом.
Значение результата
| int|null | Код завершения, null, если процесс не завершен |
string|null getExitCodeText()
Возвращает строковое представление кода выхода, возвращенного процессом.
Этот метод полагается на стандартизацию кодов выхода в Unix и может быть неактуален для других операционных систем.
Значение результата
| string|null | Строковое представление кода завершения, null, если процесс не завершен |
См. также
| http://tldp.org/LDP/abs/html/exitcodes.html | |
| http://en.wikipedia.org/wiki/Unix_signal |
bool isSuccessful()
Проверяет, завершился ли процесс успешно.
Значение результата
| bool | true, если процесс завершился успешно, false в противном случае |
bool hasBeenSignaled()
Возвращает true, если дочерний процесс был завершен неперехваченным сигналом.
Всегда возвращает false в Windows.
Значение результата
| bool |
Исключения
| LogicException | В случае, если процесс не завершен |
int getTermSignal()
Возвращает номер сигнала, который привел к завершению выполнения дочернего процесса.
Значимо только, если hasBeenSignaled() возвращает true.
Значение результата
| int |
Исключения
| RuntimeException | В случае, если --enable-sigchild активирован |
| LogicException | В случае, если процесс не завершен |
bool hasBeenStopped()
Возвращает true, если дочерний процесс был остановлен сигналом.
Всегда возвращает false в Windows.
Значение результата
| bool |
Исключения
| LogicException | В случае, если процесс не завершен |
int getStopSignal()
Возвращает номер сигнала, который привел к остановке выполнения дочернего процесса.
Значимо только, если hasBeenStopped() возвращает true.
Значение результата
| int |
Исключения
| LogicException | В случае, если процесс не завершен |
bool isRunning()
Проверяет, выполняется ли процесс в данный момент.
Значение результата
| bool | true, если процесс выполняется, false в противном случае |
bool isStarted()
Проверяет, был ли запущен процесс, независимо от текущего состояния.
Значение результата
| bool | true, если состояние готово, false в противном случае |
bool isTerminated()
Проверяет, завершен ли процесс.
Значение результата
| bool | true, если процесс завершен, false в противном случае |
string getStatus()
Получает состояние процесса.
Состояние может быть: готово, запущено, завершено.
Значение результата
| string | Текущее состояние процесса |
int stop(int|float $timeout = 10, int $signal = null)
Останавливает процесс.
Параметры
| int|float | $timeout | Таймаут в секундах |
| int | $signal | POSIX-сигнал для отправки в случае, если процесс не остановился в течение таймаута, по умолчанию SIGKILL (9) |
Значение результата
| int | Код выхода процесса |
addOutput(string $line)
Добавляет строку в поток STDOUT.
Параметры
| string | $line |
addErrorOutput(string $line)
Добавляет строку в поток STDERR.
Параметры
| string | $line |
string getCommandLine()
Получает командную строку для выполнения.
Значение результата
| string | Команда для выполнения |
Process setCommandLine(string|array $commandline)
Устанавливает командную строку для выполнения.
Параметры
| string|array | $commandline | Команда для выполнения |
Значение результата
| Process | Текущая инстанция Process |
float|null getTimeout()
Получает таймаут процесса (максимальная продолжительность работы).
Значение результата
| float|null | Таймаут в секундах или null, если он отключен |
float|null getIdleTimeout()
Получает таймаут бездействия процесса (максимальное время с момента последнего вывода).
Значение результата
| float|null | Таймаут в секундах или null, если он отключен |
Process setTimeout(int|float|null $timeout)
Устанавливает таймаут процесса (максимальная продолжительность работы).
Чтобы отключить таймаут, установите это значение в null.
Параметры
| int|float|null | $timeout | Таймаут в секундах |
Значение результата
| Process | Текущая инстанция Process |
Исключения
| InvalidArgumentException | если таймаут отрицательный |
Process setIdleTimeout(int|float|null $timeout)
Устанавливает таймаут бездействия процесса (максимальное время с момента последнего вывода).
Чтобы отключить таймаут, установите это значение в null.
Параметры
| int|float|null | $timeout | Таймаут в секундах |
Значение результата
| Процесс | Текущая инстанция процесса |
Исключения
| LogicException | если вывод отключён |
| InvalidArgumentException | если таймаут отрицательный |
Процесс setTty(bool $tty)
Включает или отключает режим TTY.
Параметры
| bool | $tty | True для включения, false для отключения |
Значение возврата
| Процесс | Текущая инстанция процесса |
Исключения
| RuntimeException | В случае, если режим TTY не поддерживается |
bool isTty()
Проверяет, включён ли режим TTY.
Значение возврата
| bool | true, если режим TTY включен, иначе false |
Процесс setPty(bool $bool)
Устанавливает режим PTY.
Параметры
| bool | $bool |
Значение возврата
| Процесс |
bool isPty()
Возвращает состояние PTY.
Значение возврата
| bool |
string|null getWorkingDirectory()
Получает рабочую директорию.
Значение возврата
| string|null | Текущая рабочая директория или null при ошибке |
Процесс setWorkingDirectory(string $cwd)
Устанавливает текущую рабочую директорию.
Параметры
| string | $cwd | Новая рабочая директория |
Значение возврата
| Процесс | Текущая инстанция процесса |
array getEnv()
Получает переменные окружения.
Значение возврата
| array | Текущие переменные окружения |
Процесс setEnv(array $env)
Устанавливает переменные окружения.
Каждое значение переменной окружения должно быть строкой. Если это массив, переменная игнорируется. Если это false или null, она будет удалена при наследовании переменных окружения.
Это происходит в PHP, когда 'argv' регистрируется в массиве $_ENV, например.
Параметры
| array | $env | Новые переменные окружения |
Значение возврата
| Процесс | Текущая инстанция процесса |
resource|string|Итератор|null getInput()
Получает входные данные процесса.
Значение возврата
| resource|string|Итератор|null | Входные данные процесса |
Процесс setInput(string|int|float|bool|resource|Объект-итератор|null $input)
Устанавливает входные данные.
Это содержимое будет передано в стандартный вход подпроцесса.
Параметры
| string|int|float|bool|resource|Объект-итератор|null | $input | Содержание |
Значение возврата
| Процесс | Текущая инстанция процесса |
Исключения
| LogicException | В случае, если процесс запущен |
Процесс inheritEnvironmentVariables(bool $inheritEnv = true)
Устанавливает, будут ли наследоваться переменные окружения.
Параметры
| bool | $inheritEnv |
Значение возврата
| Процесс | Текущая инстанция процесса |
checkTimeout()
Выполняет проверку таймаута по отношению к времени запуска процесса.
В случае запуска фонового процесса (метод start), необходимо регулярно вызывать этот метод, чтобы гарантировать соблюдение таймаута процесса.
Исключения
| ProcessTimedOutException | В случае достижения таймаута |
static bool isTtySupported()
Возвращает, поддерживается ли TTY на текущей операционной системе.
Значение возврата
| bool |
static bool isPtySupported()
Возвращает, поддерживается ли PTY на текущей операционной системе.
Значение возврата
| bool |
protected Closure buildCallback(callable $callback = null)
Создаёт обработчик, используемый методом wait().
Обработчик добавляет весь полученный вывод в определённый буфер и вызывает пользовательский обработчик (если он задан) с полученным выводом.
Параметры
| callable | $callback | Пользовательский PHP-обработчик |
Значение возврата
| Closure | PHP-замыкание |
protected updateStatus(bool $blocking)
Обновляет состояние процесса, считывает каналы.
Параметры
| bool | $blocking | Использовать ли блокирующее чтение |
protected bool isSigchildEnabled()
Возвращает, скомпилирован ли PHP с опцией '--enable-sigchild'.
Значение возврата
| bool |
setPhpBinary($php)
Устанавливает путь к бинарному файлу PHP.
Параметры
| $php |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
https://api.symfony.com/4.1/Symfony/Component/Process/PhpProcess.html