diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index 2dc247a..cd584ef 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -89,6 +89,7 @@ public function getConfigTreeBuilder() ->addDefaultsIfNotSet() ->children() ->scalarNode('console_path')->defaultValue('%kernel.root_dir%/../bin/console')->end() + ->floatNode('process_timeout')->defaultNull()->end() ->end() ->end() ->end() diff --git a/src/Executor/ExecutionProcessFactory.php b/src/Executor/ExecutionProcessFactory.php index b9a606a..a70a06a 100644 --- a/src/Executor/ExecutionProcessFactory.php +++ b/src/Executor/ExecutionProcessFactory.php @@ -20,13 +20,20 @@ class ExecutionProcessFactory */ private $environment; + /** + * @var float|null + */ + private $processTimeout; + /** * @param string $consolePath + * @param float|null $processTimeout * @param string $environment */ - public function __construct($consolePath, $environment) + public function __construct($consolePath, $processTimeout, $environment) { $this->consolePath = $consolePath; + $this->processTimeout = $processTimeout; $this->environment = $environment; } @@ -40,7 +47,9 @@ public function __construct($consolePath, $environment) public function create($uuid) { return $process = ProcessBuilder::create( - [$this->consolePath, 'task:execute', $uuid, '--env=' . $this->environment] - )->getProcess(); + [$this->consolePath, 'task:execute', $uuid, '--env=' . $this->environment] + ) + ->setTimeout($this->processTimeout) + ->getProcess(); } } diff --git a/src/Resources/config/executor/separate.xml b/src/Resources/config/executor/separate.xml index 14e520e..4180482 100644 --- a/src/Resources/config/executor/separate.xml +++ b/src/Resources/config/executor/separate.xml @@ -11,6 +11,7 @@ %task.executor.console_path% + %task.executor.process_timeout% %kernel.environment%