函式名: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()
執行事件迴圈,使事件處理器開始工作。