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 |
Свойства
| static array | $exitCodes | Таблица перевода кодов завершения. | from Process |
Методы
| __construct(string $script, string|null $cwd = null, array $env = null, int|float|null $timeout = 60, array $options = array()) Конструктор. | ||
| __destruct() | из Process | |
| __clone() | из Process | |
| int | run(callable|null $callback = null) Запускает процесс. | из Process |
| Process | mustRun(callable $callback = null) Запускает процесс. | из Process |
| start(callable $callback = null) Запускает процесс и возвращается после записи ввода в STDIN. | ||
| Process | restart(callable $callback = null) Перезапускает процесс. | из Process |
| int | wait(callable $callback = null) Ожидает завершения процесса. | из Process |
| int|null | getPid() Возвращает идентификатор процесса (PID), если применимо. | из Process |
| Process | signal(int $signal) Отправляет POSIX-сигнал процессу. | из Process |
| Process | disableOutput() Отключает получение вывода и вывода ошибок от основного процесса. | из Process |
| Process | enableOutput() Включает получение вывода и вывода ошибок от основного процесса. | из Process |
| bool | isOutputDisabled() Возвращает true, если вывод отключен, иначе false. | из Process |
| string | getOutput() Возвращает текущий вывод процесса (STDOUT). | из Process |
| string | getIncrementalOutput() Возвращает вывод постепенно. | из Process |
| Process | clearOutput() Очищает вывод процесса. | из Process |
| string | getErrorOutput() Возвращает текущий вывод ошибок процесса (STDERR). | из Process |
| string | getIncrementalErrorOutput() Возвращает вывод ошибок постепенно. | из Process |
| Process | clearErrorOutput() Очищает вывод ошибок процесса. | из Process |
| null|int | getExitCode() Возвращает код завершения, возвращенный процессом. | из Process |
| null|string | 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. | из Process | |
| string | getCommandLine() Получает командную строку для выполнения. | из Process |
| Process | setCommandLine(string $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 |
| string|null | getWorkingDirectory() Получает рабочую директорию. | from Process |
| Process | setWorkingDirectory(string $cwd) Устанавливает текущую рабочую директорию. | from Process |
| array | getEnv() Получает переменные окружения. | from Process |
| Process | setEnv(array $env) Устанавливает переменные окружения. | from Process |
| null|string | getInput() Получает входные данные процесса. | from Process |
| Process | setInput(mixed $input) Устанавливает входные данные. | from Process |
| array | getOptions() Получает параметры для proc_open. | from Process |
| Process | setOptions(array $options) Устанавливает параметры для proc_open. | from Process |
| bool | getEnhanceWindowsCompatibility() Получает, включена ли совместимость с Windows. | from Process |
| Process | setEnhanceWindowsCompatibility(bool $enhance) Устанавливает, включена ли совместимость с Windows. | from Process |
| bool | getEnhanceSigchildCompatibility() Возвращает, активирован ли режим совместимости sigchild. | from Process |
| Process | setEnhanceSigchildCompatibility(bool $enhance) Активирует режим совместимости sigchild. | from Process |
| checkTimeout() Проверяет, превышен ли заданный таймаут. | from Process | |
| static bool | isPtySupported() Возвращает, поддерживается ли PTY на текущей операционной системе. | from Process |
| setPhpBinary($php) Устанавливает путь к бинарному файлу PHP. |
Подробности
__construct(string $script, string|null $cwd = null, array $env = null, int|float|null $timeout = 60, array $options = array())
Конструктор.
Параметры
| string | $script | PHP-скрипт для выполнения (в виде строки) |
| string|null | $cwd | Рабочая директория или null для использования рабочей директории текущего процесса PHP |
| array | $env | Переменные окружения или null для использования тех же переменных окружения, что и у текущего процесса PHP |
| int|float|null | $timeout | Таймаут в секундах или null для отключения |
| array | $options | Массив опций для proc_open |
__destruct()
__clone()
int run(callable|null $callback = null)
Выполняет процесс.
Обратный вызов получает тип вывода (out или err) и некоторые байты из вывода в реальном времени. Это позволяет получать обратную связь от независимого процесса во время выполнения.
STDOUT и STDERR также доступны после завершения процесса через методы getOutput() и getErrorOutput().
Параметры
| callable|null | $callback | PHP-обратный вызов, который будет выполняться всякий раз, когда есть доступный вывод в STDOUT или STDERR |
Значение, возвращаемое функцией
| int | Код завершения процесса |
Исключения
| RuntimeException | При невозможности запуска процесса |
| RuntimeException | Если процесс был остановлен после получения сигнала |
| LogicException | Если указан обратный вызов, а вывод отключен |
Process mustRun(callable $callback = null)
Выполняет процесс.
Это идентично run(), за исключением того, что если процесс завершился с ненулевым кодом выхода, генерируется исключение.
Параметры
| callable | $callback |
Значение, возвращаемое функцией
| Process |
Исключения
| RuntimeException | если PHP был скомпилирован с --enable-sigchild и режим совместимости sigchild не включен |
| ProcessFailedException | если процесс завершился неудачно |
start(callable $callback = null)
Запускает процесс и возвращается после записи входных данных в STDIN.
Этот метод блокируется до тех пор, пока все данные STDIN не будут отправлены в процесс, а затем возвращается, в то время как процесс выполняется в фоновом режиме.
Ожидание завершения процесса можно выполнить с помощью wait().
Обратный вызов получает тип вывода (out или err) и некоторые байты из вывода в реальном времени во время записи стандартного ввода в процесс. Это позволяет получить обратную связь от независимого процесса во время выполнения. Если обратный вызов не передан, метод wait() можно вызвать с true в качестве второго параметра, тогда обратный вызов получит все данные, возникшие во время (и с момента) вызова start.
Параметры
| callable | $callback | PHP-обратный вызов, который будет выполняться всякий раз, когда есть доступный вывод в STDOUT или STDERR |
Исключения
| RuntimeException | При невозможности запуска процесса |
| RuntimeException | Если процесс уже запущен |
| LogicException | Если указан обратный вызов, а вывод отключен |
Process restart(callable $callback = null)
Перезапускает процесс.
Обратите внимание, что процесс клонируется перед запуском.
Параметры
| callable | $callback | PHP-обратный вызов, который будет выполняться всякий раз, когда есть доступный вывод в STDOUT или STDERR |
Значение, возвращаемое функцией
| Process | Новый процесс |
Исключения
| RuntimeException | При невозможности запуска процесса |
| RuntimeException | Если процесс уже запущен |
См. также
| start() |
int wait(callable $callback = null)
Ожидает завершения процесса.
Обратный вызов получает тип вывода (out или err) и некоторые байты из вывода в реальном времени во время записи стандартного ввода в процесс. Это позволяет получить обратную связь от независимого процесса во время выполнения.
Параметры
| callable | $callback | Действительный PHP-обратный вызов |
Значение, возвращаемое функцией
| int | Код завершения процесса |
Исключения
| RuntimeException | При истечении таймаута процесса |
| RuntimeException | Если процесс был остановлен после получения сигнала |
| LogicException | Если процесс еще не запущен |
int|null getPid()
Возвращает идентификатор процесса (PID), если применимо.
Значение, возвращаемое функцией
| int|null | Идентификатор процесса, если процесс запущен, в противном случае null |
Process signal(int $signal)
Отправляет POSIX-сигнал процессу.
Параметры
| int | $signal | Действительный POSIX-сигнал (см. http://www.php.net/manual/en/pcntl.constants.php) |
Значение, возвращаемое функцией
| Process |
Исключения
| LogicException | Если процесс не запущен |
| RuntimeException | Если --enable-sigchild активирован и процесс нельзя убить |
| RuntimeException | В случае ошибки |
Process disableOutput()
Отключает получение вывода и вывода ошибок от основного процесса.
Значение, возвращаемое функцией
| Process |
Исключения
| RuntimeException | Если процесс уже запущен |
| LogicException | если установлен таймаут бездействия |
Process enableOutput()
Включает получение вывода и вывода ошибок от основного процесса.
Значение, возвращаемое функцией
| Process |
Исключения
| RuntimeException | Если процесс уже запущен |
bool isOutputDisabled()
Возвращает true, если вывод отключен, иначе false.
Значение, возвращаемое функцией
| bool |
string getOutput()
Возвращает текущий вывод процесса (STDOUT).
Значение, возвращаемое функцией
| string | Вывод процесса |
Исключения
| LogicException | если вывод отключен |
| LogicException | если процесс не запущен |
string getIncrementalOutput()
Возвращает вывод по частям.
В отличие от метода getOutput, который всегда возвращает весь вывод, этот метод возвращает новый вывод с момента последнего вызова.
Значение, возвращаемое функцией
| string | Вывод процесса с момента последнего вызова |
Исключения
| LogicException | в случае, если вывод был отключён |
| LogicException | В случае, если процесс не запущен |
Process clearOutput()
Очищает вывод процесса.
Возвращаемое значение
| Process |
string getErrorOutput()
Возвращает текущий вывод ошибки процесса (STDERR).
Возвращаемое значение
| string | Вывод ошибки процесса |
Исключения
| LogicException | в случае, если вывод был отключён |
| LogicException | В случае, если процесс не запущен |
string getIncrementalErrorOutput()
Возвращает вывод ошибки по частям.
По сравнению с методом getErrorOutput, который всегда возвращает весь вывод ошибки, этот метод возвращает только новый вывод ошибки с момента последнего вызова.
Возвращаемое значение
| string | Вывод ошибки процесса с момента последнего вызова |
Исключения
| LogicException | в случае, если вывод был отключён |
| LogicException | В случае, если процесс не запущен |
Process clearErrorOutput()
Очищает вывод процесса.
Возвращаемое значение
| Process |
null|int getExitCode()
Возвращает код завершения, возвращённый процессом.
Возвращаемое значение
| null|int | Код состояния завершения, null, если процесс не завершён |
Исключения
| RuntimeException | В случае, если --enable-sigchild активирован, а режим совместимости sigchild отключён |
null|string getExitCodeText()
Возвращает строковое представление кода завершения, возвращённого процессом.
Этот метод опирается на стандартизацию кодов завершения Unix и может быть неактуален для других операционных систем.
Возвращаемое значение
| null|string | Строковое представление кода состояния завершения, null, если процесс не завершён. |
См. также
| http://tldp.org/LDP/abs/html/exitcodes.html | |
| http://en.wikipedia.org/wiki/Unix_signal |
bool isSuccessful()
Проверяет, завершился ли процесс успешно.
Возвращаемое значение
| bool | true, если процесс завершился успешно, иначе false |
bool hasBeenSignaled()
Возвращает true, если дочерний процесс был завершён необработанным сигналом.
На Windows всегда возвращает false.
Возвращаемое значение
| bool |
Исключения
| RuntimeException | В случае, если --enable-sigchild активирован |
| LogicException | В случае, если процесс не завершён |
int getTermSignal()
Возвращает номер сигнала, который привёл к завершению выполнения дочернего процесса.
Значимо только если hasBeenSignaled() возвращает true.
Возвращаемое значение
| int |
Исключения
| RuntimeException | В случае, если --enable-sigchild активирован |
| LogicException | В случае, если процесс не завершён |
bool hasBeenStopped()
Возвращает true, если дочерний процесс был остановлен сигналом.
На Windows всегда возвращает false.
Возвращаемое значение
| 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()
Получает статус процесса.
Статус может быть: ready, started, terminated.
Возвращаемое значение
| 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 $commandline)
Устанавливает командную строку для выполнения.
Параметры
| string | $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 | Время ожидания в секундах |
Значение возврата
| Process | Текущий экземпляр Process. |
Исключения
| LogicException | если вывод отключён |
| InvalidArgumentException | если время ожидания отрицательное |
Process setTty(bool $tty)
Включает или отключает режим TTY.
Параметры
| bool | $tty | True для включения, false для отключения |
Значение возврата
| Process | Текущий экземпляр Process |
Исключения
| RuntimeException | В случае, если режим TTY не поддерживается |
bool isTty()
Проверяет, включен ли режим TTY.
Значение возврата
| bool | true, если режим TTY включен, иначе false |
Process setPty(bool $bool)
Устанавливает режим PTY.
Параметры
| bool | $bool |
Значение возврата
| Process |
bool isPty()
Возвращает состояние PTY.
Значение возврата
| bool |
string|null getWorkingDirectory()
Получает рабочую директорию.
Значение возврата
| string|null | Текущая рабочая директория или null при ошибке |
Process setWorkingDirectory(string $cwd)
Устанавливает текущую рабочую директорию.
Параметры
| string | $cwd | Новая рабочая директория |
Значение возврата
| Process | Текущий экземпляр Process |
array getEnv()
Получает переменные окружения.
Значение возврата
| array | Текущие переменные окружения |
Process setEnv(array $env)
Устанавливает переменные окружения.
Значение переменной окружения должно быть строкой. Если это массив, переменная игнорируется.
Это происходит в PHP, например, когда 'argv' регистрируется в массиве $_ENV.
Параметры
| array | $env | Новые переменные окружения |
Значение возврата
| Process | Текущий экземпляр Process |
null|string getInput()
Получает входные данные процесса.
Значение возврата
| null|string | Входные данные процесса |
Process setInput(mixed $input)
Устанавливает входные данные.
Это содержимое будет передано на стандартный ввод подлежащего процесса.
Параметры
| mixed | $input | Содержимое |
Значение возврата
| Process | Текущий экземпляр Process |
Исключения
| LogicException | В случае, если процесс выполняется |
array getOptions()
Получает параметры для proc_open.
Значение возврата
| array | Текущие параметры |
Process setOptions(array $options)
Устанавливает параметры для proc_open.
Параметры
| array | $options | Новые параметры |
Значение возврата
| Process | Текущий экземпляр Process |
bool getEnhanceWindowsCompatibility()
Получает, включена ли совместимость с Windows.
По умолчанию true.
Значение возврата
| bool |
Process setEnhanceWindowsCompatibility(bool $enhance)
Устанавливает, включена ли совместимость с Windows.
Параметры
| bool | $enhance |
Значение возврата
| Process | Текущий экземпляр Process |
bool getEnhanceSigchildCompatibility()
Возвращает, активирован ли режим совместимости sigchild.
Значение возврата
| bool |
Process setEnhanceSigchildCompatibility(bool $enhance)
Активирует режим совместимости sigchild.
Режим совместимости sigchild необходим для получения кода завершения и определения успеха процесса, когда PHP скомпилирован с параметром --enable-sigchild.
Параметры
| bool | $enhance |
Значение возврата
| Process | Текущий экземпляр Process |
checkTimeout()
Выполняет проверку времени ожидания относительно времени начала процесса.
Если вы запускаете фоновый процесс (с помощью метода start), вы должны регулярно вызывать этот метод, чтобы обеспечить соблюдение таймаута процесса.
Исключения
| ProcessTimedOutException | В случае превышения времени ожидания |
static bool isPtySupported()
Возвращает, поддерживается ли PTY на текущей операционной системе.
Значение возврата
| bool |
setPhpBinary($php)
Устанавливает путь к бинарному файлу PHP для использования.
Параметры
| $php |
© 2004–2017 Fabien Potencier
Licensed under the MIT License.
http://api.symfony.com/3.0/Symfony/Component/Process/PhpProcess.html