函数名:Event::addSignal()
适用版本:PHP 5 (PECL event >= 1.2.4)
用法: Event::addSignal() 函数用于添加一个信号事件处理器,当接收到指定的信号时该事件处理器被触发。
语法: bool Event::addSignal(int $signal, callable $callback [, mixed $arg = NULL])
参数:
- $signal:指定的信号,在Unix系统中可以使用常量如 SIGHUP、SIGTERM等来表示。
- $callback:回调函数,当信号被接收时被调用。回调函数如果返回FALSE,事件处理后会停止。
- $arg (可选):可传递给回调函数的参数。
返回值: 成功添加信号事件处理器则返回 TRUE,如果失败则返回 FALSE。
示例:
// 创建一个信号事件处理器,当接收到SIGUSR1信号时触发处理函数
function signalHandler($signal, $event)
{
echo "Received signal: $signal" . PHP_EOL;
// 停止事件处理
return false;
}
$base = new EventBase();
$event = Event::signal($base, SIGUSR1, 'signalHandler');
// 添加信号事件处理器
if ($event !== false) {
if (!$event->add()) {
echo "Failed to add signal event." . PHP_EOL;
exit(1);
}
}
else {
echo "Failed to create signal event." . PHP_EOL;
exit(1);
}
// 运行事件循环
$base->loop();
上述示例中我们创建了一个信号事件处理器,当接收到SIGUSR1信号时会调用 signalHandler()
函数来处理。在该函数中,我们简单地打印接收到的信号,并在返回false时停止事件处理。然后我们创建了一个EventBase对象和一个Event::signal对象,并通过 add()
方法添加信号事件处理器。最后,通过调用 $base->loop()
运行事件循环,使事件处理器开始工作。