Создаёт события для сигналов

Модуль Event умеет отслеживать сигналы в стиле интерфейса POSIX. Обработчики для сигнала создают через метод Event::__construct() с флагом Event::SIGNAL или фабричный метод Event::signal().

Пример #1 Пример обработки сигнала SIGTERM

<?php

/*
Запуск в окне терминала:

$ php examples/signal.php

В другом терминальном окне отыщите этот процесс
и отправьте процессу сигнал SIGTERM:

$ ps aux | grep examp
ruslan 3976 0.2 0.0 139896 11256 pts/1 S+ 10:25 0:00 php examples/signal.php
ruslan 3978 0.0 0.0 9572 864 pts/2 S+ 10:26 0:00 grep --color=auto examp
$ kill -TERM 3976

В первом терминале появится следующее:

Пойман сигнал 15
*/
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();

?>

Обратите внимание, callback-функции запускаются внутри событийного цикла после получения сигнала, поэтому для них безопасно вызывать функции, которые лучше не запускать из стандартных обработчиков сигналов интерфейса POSIX.

Дополнительную информацию даёт раздел » Fast portable non-blocking network programming with Libevent, Constructing Signal Events.

Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top