Помічник Process

Дата оновлення перекладу 2025-07-25

Помічник Process

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

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

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

$helper = new ProcessHelper();
$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']);

    Note

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

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

    1
    2
    3
    4
    5
    6
    use Symfony\Component\Process\Process;
    
    // ...
    $process = new Process(['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
    }
});