Register process control signel handlers only on execution of the command

This commit is contained in:
Thomas Müller 2016-02-09 15:52:19 +01:00
parent 4659bf9b4a
commit 60c1ff7634
1 changed files with 12 additions and 10 deletions

View File

@ -49,15 +49,6 @@ class Base extends Command {
$this->defaultOutputFormat $this->defaultOutputFormat
) )
; ;
// check if the php pcntl_signal functions are accessible
$this->php_pcntl_signal = function_exists('pcntl_signal');
if ($this->php_pcntl_signal) {
// Collect interrupts and notify the running command
pcntl_signal(SIGTERM, [$this, 'cancelOperation']);
pcntl_signal(SIGINT, [$this, 'cancelOperation']);
}
} }
/** /**
@ -150,8 +141,19 @@ class Base extends Command {
* *
* Gives a chance to the command to properly terminate what it's doing * Gives a chance to the command to properly terminate what it's doing
*/ */
private function cancelOperation() { protected function cancelOperation() {
$this->interrupted = true; $this->interrupted = true;
} }
public function run(InputInterface $input, OutputInterface $output) {
// check if the php pcntl_signal functions are accessible
$this->php_pcntl_signal = function_exists('pcntl_signal');
if ($this->php_pcntl_signal) {
// Collect interrupts and notify the running command
pcntl_signal(SIGTERM, [$this, 'cancelOperation']);
pcntl_signal(SIGINT, [$this, 'cancelOperation']);
}
return parent::run($input, $output);
}
} }