Помічник Process

Дата оновлення перекладу 2024-04-30

Помічник Process

Помічник Process відображає процеси під час їх виконання та повідомляє корисну інформацію про статус процесу.

Щоб відобразити деталі процесу, використайте ProcessHelper і запустіть вашу команду з деталізацією. Наприклад, виконання наступного коду з дуже високою деталізацією (наприклад, -vv):

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

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

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

Призведе до такого виведення:

Виведення у консолі двох рядків: «RUN “figlet” “Symfony”» і «Команда RES виконана успішно».

Це призведе до більш деталізованого виведення з деталізацією налагодження (наприклад, -vvv):

Між командним рядком і рядком результату тепер буде показано виведення команди з префіксом «OUT».

У разі невдачі процесу, налагодження буде простішим:

Останній рядок показує «Команда RES 127 не була виконана успішно», а рядки виведення показують більше інформації про помилку команди.

Note

За замовчуванням помічник process використовує виведення помилок (stderr) за замовчуванням. Цю поведінку можна змінити, передавши екземпляр StreamOutput до методу run().

Аргументи

Існує три способи використовувати помічника процесу:

  • Використання у командному рядку:

    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 (string $type, string $data): void {
    if (Process::ERR === $type) {
        // ... зробити щось з виведенням stderr
    } else {
        // ... зробити щось з stdout
    }
});