neutron/signal-handler

一个简化信号处理的库。

1.0.1 2014-01-15 17:24 UTC

This package is auto-updated.

Last update: 2024-08-25 06:45:58 UTC


README

Build Status

一个简单的信号处理器,用于管理传入的 POSIX 信号。

它被实现为一个单例,因为 pcntl_signal 只能注册一个回调函数处理每个信号。

使用这个库,你可以根据需要为每个信号注册任意多的回调函数。

有关信号更多信息,请参阅 man signal

// mandatory to listen to signals
declare(ticks=1);
$handler = Neutron\SignalHandler\SignalHandler::getInstance();
$handler->register(array(SIGINT, SIGTERM), function () { echo "stoppin !"; exit(); });
$handler->register(SIGCONT, function () { echo "all systems go..."; });

注册信号处理器

// register a handler for SIGCONT in default namespace
$handler->register(SIGCONT, function () { echo "SIGCONT received"; });
// register a handler for SIGCONT in "a namespace"
$handler->register(SIGCONT, function () { echo "SIGCONT received"; }, 'a namespace');
// register a handler for SIGCONT in "another namespace"
$handler->register(SIGINT, function () { echo "Interrupted !"; exit(); }, 'another namespace');

注销信号处理器

有两种方法可以注销信号处理器。

通过命名空间

// unregister all handlers in "another namespace"
$handler->unregisterNamespace('another namespace');
// unregister all SIGINT handlers in "a namespace"
$handler->unregisterNamespace('a namespace', SIGINT);

通过信号

// unregister all SIGINT handlers in any namespace
$handler->unregisterSignal(SIGINT);

许可证

本项目采用 MIT 许可证发布。