Event может отслеживать сигналы в стиле POSIX. Для создания обработчика для сигнала используйте конструктор Event::__construct() с флагом Event::SIGNAL
или фабричный метод Event::signal().
Пример #1 Обработка сигнала SIGTERM
<?php
class MyEventSignal {
private $base, $ev;
public function __construct($base) {
$this->base = $base;
$this->ev = Event::signal($base, SIGTERM, array($this, 'eventSighandler'));
$this->ev->add();
}
public function eventSighandler($no, $c) {
echo "Пойман сигнал $no\n";
$this->base->exit();
}
}
$base = new EventBase();
$c = new MyEventSignal($base);
$base->loop();
?>
Обратите внимание, что функции обратного вызова запускаются внутри событийного цикла после получения сигнала, так что для них вполне безопасно вызывать функции, которые не следует запускать из обычных обработчиков сигналов POSIX.
Также почитайте » Fast portable non-blocking network programming with Libevent, Constructing Signal Events .