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

Метод setTimeout

Метод setTimeout класса Process задаёт максимальное время выполнения внешнего процесса. Первым параметром передаётся количество секунд, отведённое на работу процесса. Если процесс не успевает завершиться за это время, Symfony выбрасывает исключение ProcessTimedOutException. Вторым необязательным параметром можно указать общее время ожидания для всех итераций.

Синтаксис

public function setTimeout(int|float|null $timeout): static

Пример

Давайте запустим команду 'sleep 3' с таймаутом в 5 секунд. Процесс успешно завершится, так как время выполнения меньше лимита:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['sleep', '3']); $process->setTimeout(5); $process->run(); return new Response($process->getOutput()); } } ?>

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

""

Пример

А теперь установим таймаут в 1 секунду для той же команды. Процесс будет остановлен, и мы получим исключение:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentProcessExceptionProcessTimedOutException; use SymfonyComponentProcessProcess; class ProcessController extends AbstractController { public function index(): Response { $process = new Process(['sleep', '3']); $process->setTimeout(1); try { $process->run(); $res = $process->getOutput(); } catch (ProcessTimedOutException $e) { $res = 'Process timed out: ' . $e->getMessage(); } return new Response($res); } } ?>

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

"Process timed out: The process "sleep 3" exceeded the timeout of 1 seconds."

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

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