查詢

Event::addSignal()函式—用法及示例

「 新增一個訊號事件處理器,當接收到指定的訊號時該事件處理器被觸發 」


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

補充糾錯
上一個函式: Event::addTimer()函式
下一個函式: Event::add()函式
熱門PHP函式
分享連結