Помощник Process

Помощник Process отображает процессы во время их выполнения и сообщает полезную информацию о статусе процесса.

Чтобы отобразить детали процесса, используйте ProcessHelper и запустите вашу команду с детализацией. Например, выполнение следующего кода с очень высокой детализцией (например, -vv):

1
2
3
4
5
6
use Symfony\Component\Process\Process;

$helper = $this->getHelper('process');
$process = new Process(array('figlet', 'Symfony'));

$helper->run($output, $process);

Приведёт к такому выводу:

../../../_images/process-helper-verbose.png

Это приведёт к более детализированному выводу с детализацией отладки (например, -vvv):

../../../_images/process-helper-debug.png

В случае неудачи процесса, отладка будет проще:

../../../_images/process-helper-error-debug.png

Аргументы

Существует три способа использовать помощник процесса:

  • Использование командной строки:

    1
    2
    // ...
    $helper->run($output, 'figlet Symfony');
    
  • Массив аргументов:

    1
    2
    // ...
    $helper->run($output, array('figlet', 'Symfony'));
    

    Note

    При запуске помощника с массивом аргументов, имейте в виду, что они будут автоматически экранированы.

  • Передача экземпляра Process:

    1
    2
    3
    4
    5
    6
    use Symfony\Component\Process\Process;
    
    // ...
    $process = new Process(array('figlet', 'Symfony'));
    
    $helper->run($output, $process);
    

Настроенное отображение

Вы можете отобразить настроенное сообщение об ошибке используя третий аргумент метода run():

1
$helper->run($output, $process, 'The process failed :(');

Обратный вызов пользовательского процесса может быть передан в качестве четвёртого аргумента. Обратитесь к Компоненту Process, чтобы увидеть документацию обратного вызова:

1
2
3
4
5
6
7
8
9
use Symfony\Component\Process\Process;

$helper->run($output, $process, 'The process failed :(', function ($type, $data) {
    if (Process::ERR === $type) {
        // ... сделать что-то с выводом stderr
    } else {
        // ... сделать что-то с stdout
    }
});

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.