查詢

Ev::feedSignal()函式—用法及示例

「 將訊號傳送給事件迴圈 」


函式名:Ev::feedSignal()

適用版本:PHP 7.0及以上(需要安裝Ev extension)

用法:Ev::feedSignal(int $signum) : void

說明: Ev::feedSignal() 函式用於將訊號傳送給事件迴圈。它向事件迴圈引擎傳送一個特定的訊號,例如終止訊號(SIGTERM)或Ctrl+C中斷訊號(SIGINT)。

引數:

  • $signum:要傳送的訊號的整數值,例如SIGTERM或SIGINT等。可以使用標準訊號名稱或對應的整數值。可使用SIGCONT(18)、SIGSTOP(19)、SIGTERM(15)、SIGINT(2)等值。

返回值: 該函式沒有返回值。

示例:

// 建立事件迴圈物件
$loop = new EvLoop();

// 定義訊號處理函式
$signalHandler = function ($watcher, $revents) use ($loop) {
    // Signal handler body
    echo "Received signal - ", $watcher->signum, PHP_EOL;
    
    // 停止事件迴圈
    $loop->stop();
};

// 建立訊號handler並新增到事件迴圈
$signalWatcher = Ev::signal(SIGINT, $signalHandler);
$signalWatcher->start();

// 將訊號傳送到事件迴圈
Ev::feedSignal(SIGINT);

// 啟動事件迴圈
$loop->run();

// 當收到 Ctrl+C 中斷訊號,迴圈結束並輸出示例結果。

在上述示例中,我們首先建立了一個事件迴圈物件(EvLoop()),然後定義了一個訊號處理函式($signalHandler)。接著,我們建立了一個訊號處理器物件($signalWatcher),並將其新增到事件迴圈中。最後,透過呼叫 Ev::feedSignal() 函式,將SIGINT訊號傳送給事件迴圈,並啟動事件迴圈的執行。當收到Ctrl+C中斷訊號時,事件迴圈將停止執行,並輸出示例結果。

補充糾錯
上一個函式: Ev::embeddableBackends()函式
下一個函式: Ev::feedSignalEvent()函式
熱門PHP函式
分享連結