Метод run класса Process
Метод run класса Process запускает
внешнюю команду и дожидается её завершения. Он
возвращает объект Process, что позволяет
сразу прочитать вывод команды. Если команда
завершилась с ошибкой, метод бросает исключение
ProcessFailedException.
Первым параметром передаётся массив аргументов команды. Вторым необязательным параметром можно передать callback, который будет вызван для каждой строки вывода. Третий параметр задаёт переменные окружения.
Синтаксис
$process->run(callable $callback = null, array $env = [])
Пример
Давайте запустим команду 'ls' и выведем её результат:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentProcessProcess;
class ProcessController extends AbstractController
{
public function index(): Response
{
$process = new Process(['ls']);
$process->run();
return new Response($process->getOutput());
}
}
?>
Результат выполнения кода:
"article
user
hello"
Пример
Давайте передадим callback для обработки каждой строки вывода:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentProcessProcess;
class ProcessController extends AbstractController
{
public function index(): Response
{
$process = new Process(['echo', 'abcde']);
$process->run(function ($type, $buffer) {
echo $buffer;
});
return new Response($process->getOutput());
}
}
?>
Результат выполнения кода:
"abcde"