Signals are an inter-process communication mechanism used by console commands.
A signal is an asynchronous notification sent to a process (or to a specific
thread within the same process) in order to notify it of an event that occurred.
For example, when you press Ctrl + C in a command, the operating system
sends the SIGINT signal to it.
Symfony 5.2 introduces support for responding to signals in your commands
(e.g. to perform some cleanup tasks when quitting a command). If you want to
handle some signals in a command, implement the new SignalableCommandInterface:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
// ...
use Symfony\Component\Console\Command\SignalableCommandInterface;
class SignalCommand extends Command implements SignalableCommandInterface
{
    // ...
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        // ...
    }
    public function getSubscribedSignals(): array
    {
        // return here any of the constants defined by PCNTL extension
        // https://www.php.net/manual/en/pcntl.constants.php
        return [SIGINT, SIGTERM];
    }
    public function handleSignal(int $signal)
    {
        if (SIGINT === $signal) {
            // ...
        }
        // ...
    }
}
    If you prefer to handle some signals for all application commands (e.g. to log
or profile commands), define an event listener or subscriber and listen to
the new ConsoleEvents::SIGNAL event:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// ...
use Symfony\Component\Console\Event\ConsoleSignalEvent;
class SignalSubscriber implements EventSubscriberInterface
{
    // ...
    public function handleSignal(ConsoleSignalEvent $event)
    {
        $signal = $event->getHandlingSignal();
        // ...
    }
    public static function getSubscribedEvents()
    {
        return [
            ConsoleEvents::SIGNAL => 'handleSignal',
        ];
    }
}
    
            
Great feature!
Symfony is amazing ... and now thanks to PHP 8, it's great to see how the language I like the most is growing and its best framework too
It's Great!
So useful! Thanks a lot 🙏🙏🙏
\o/