innmind / signals
Manage multiple callbacks per signal
4.1.1
2025-08-20 12:30 UTC
Requires
- php: ~8.2
- innmind/immutable: ~5.18
Requires (Dev)
- innmind/black-box: ~6.5
- innmind/coding-standard: ~2.0
- innmind/static-analysis: ^1.2.1
This package is auto-updated.
Last update: 2025-08-20 12:31:44 UTC
README
Small abstraction on top of pcntl_signal
to allow to register multiple callables for a single signal.
Installation
composer require innmind/signals
Usage
use Innmind\Signals\{ Handler, Signal, Info, }; $handler = Handler::main(); // automatically enable async signal on first `->listen()` call $handler->listen(Signal::interrupt, function(Signal $signal, Info $info): void { echo 'foo'; }); $handler->listen(Signal::interrupt, function(Signal $signal, Info $info): void { echo 'bar'; }); // do some logic here
When above script is executed in a terminal and you do a ctrl + c
to stop the process it will print foobar
instead of stopping the script.
If for some reason you need to remove a handler (for example when a child process ended) you can call $handler->remove($listener)
(remove the listener for all signals).