РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1055 of 1361 menu

Метод wait класса Process

Метод wait класса Process запускает процесс и блокирует выполнение скрипта до его завершения. Если процесс уже запущен через start, метод просто ожидает его завершения. Первым параметром передаётся callback-функция, которая вызывается для обработки вывода в реальном времени. Вторым параметром передаётся таймаут ожидания в секундах. Метод возвращает код выхода процесса.

Синтаксис

public function wait(callable $callback = null, int $timeout = null): int

Пример

Давайте запустим простую команду и дождёмся её завершения:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['ls', '-la']); $code = $process->wait(); return new Response('Exit code: ' . $code); } } ?>

Результат выполнения кода:

Exit code: 0

Пример

Давайте передадим callback-функцию для обработки вывода процесса в реальном времени:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['echo', 'hello']); $output = ''; $code = $process->wait(function ($type, $buffer) use (&$output) { $output .= $buffer; }); return new Response('Output: ' . $output); } } ?>

Результат выполнения кода:

Output: hello

Пример

Давайте запустим процесс через start, а затем дождёмся его завершения через wait:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['sleep', '1']); $process->start(); $code = $process->wait(); return new Response('Exit code: ' . $code); } } ?>

Результат выполнения кода:

Exit code: 0

Смотрите также

  • класс Process,
    который управляет внешними процессами
  • метод run,
    который запускает процесс и возвращает код выхода
  • метод start,
    который запускает процесс асинхронно
  • метод getOutput,
    который возвращает стандартный вывод процесса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить