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
)
;
// 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
*/
private function cancelOperation() {
protected function cancelOperation() {
$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);
}
}