Метод mustRun класса Process
Метод mustRun класса Process запускает
внешний процесс и ожидает его завершения. В отличие
от метода run, если команда вернёт ненулевой
код выхода, метод mustRun выбросит исключение
ProcessFailedException. Это удобно, когда
нужно быть уверенным, что команда выполнилась успешно.
Синтаксис
$process->mustRun(?callable $callback = null): void
Пример
Давайте запустим команду 'echo hello' и получим её вывод:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Process\Process;
class ProcessController extends AbstractController
{
public function index(): Response
{
$process = new Process(['echo', 'hello']);
$process->mustRun();
return new Response($process->getOutput());
}
}
?>
Результат выполнения кода:
hello
Пример
Давайте запустим команду, которая завершится с ошибкой, и перехватим исключение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Process\Exception\ProcessFailedException;
use Symfony\Component\Process\Process;
class ProcessController extends AbstractController
{
public function index(): Response
{
$process = new Process(['ls', '/nonexistent']);
try {
$process->mustRun();
} catch (ProcessFailedException $e) {
return new Response($e->getMessage());
}
return new Response($process->getOutput());
}
}
?>
Результат выполнения кода:
The command "ls /nonexistent" failed.
Пример
Давайте передадим callback для обработки вывода процесса:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Process\Process;
class ProcessController extends AbstractController
{
public function index(): Response
{
$process = new Process(['echo', 'abcde']);
$output = '';
$process->mustRun(function ($type, $buffer) use (&$output) {
$output .= $buffer;
});
return new Response($output);
}
}
?>
Результат выполнения кода:
abcde
Смотрите также
-
метод
run,
который запускает процесс и ожидает его завершения -
метод
start,
который запускает процесс асинхронно -
метод
getOutput,
который возвращает стандартный вывод процесса -
метод
getErrorOutput,
который возвращает вывод ошибок процесса