37 lines
657 B
PHP
37 lines
657 B
PHP
|
<?php
|
||
|
|
||
|
namespace NoccyLabs\Ipc\Signal;
|
||
|
|
||
|
|
||
|
class SignalHandler
|
||
|
{
|
||
|
private $signo;
|
||
|
|
||
|
private $callbacks;
|
||
|
|
||
|
public function __construct(int $signo, array $callbacks=[])
|
||
|
{
|
||
|
$this->signo = $signo;
|
||
|
$this->callbacks = $callbacks;
|
||
|
pcntl_signal($this->signo, [ $this, "onSignal" ]);
|
||
|
}
|
||
|
|
||
|
public function __destruct()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
public function addHandler(callable $handler):void
|
||
|
{
|
||
|
$this->callbacks[] = $handler;
|
||
|
}
|
||
|
|
||
|
public function onSignal($signo)
|
||
|
{
|
||
|
foreach ($this->callbacks as $callback) {
|
||
|
if (call_user_func($callback) === true)
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|