查詢

EvLoop::signal()函式—用法及示例

「 在事件迴圈中新增訊號處理器,以響應系統中特定訊號的觸發 」


函式名稱:EvLoop::signal()

適用版本:Ev 4.0.0+

說明:EvLoop::signal()函式用於在事件迴圈中新增訊號處理器,以響應系統中特定訊號的觸發。

用法:

void EvLoop::signal(int $signum, callable $callback [, mixed $data = NULL ])

引數:

  • $signum:整數值,表示要監聽的訊號編號。
  • $callback:回撥函式,當訊號被觸發時執行。
  • $data(可選):可選引數,可以傳遞給回撥函式的附加資料。

返回值:無返回值。如果發生錯誤,將丟擲一個異常。

示例:

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

// 定義一個訊號處理器函式
function handleSignal($signum, $w) {
    switch($signum) {
        case SIGINT:
            echo "SIGINT訊號被觸發\n";
            break;
        case SIGTERM:
            echo "SIGTERM訊號被觸發\n";
            break;
    }
   
    // 停止事件迴圈
    Ev::stop();
}

// 新增訊號處理器到事件迴圈
$loop->signal(SIGINT, 'handleSignal');
$loop->signal(SIGTERM, 'handleSignal');

// 開始事件迴圈
$loop->run();

以上示例中,我們建立了一個事件迴圈物件$loop,並定義了一個訊號處理器函式handleSignal()。然後,我們使用EvLoop::signal()函式將訊號處理器新增到事件迴圈中。當SIGINT或SIGTERM訊號被觸發時,handleSignal()函式將被執行。最後,透過呼叫$loop->run()開始事件迴圈,直到接收到SIGINT或SIGTERM訊號並執行相應的處理程式碼後停止事件迴圈。

補充糾錯
上一個函式: EvLoop::run()函式
下一個函式: EvLoop::stat()函式
熱門PHP函式
分享連結