查詢

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

「 建立一個訊號事件,並將其附加到可選的event base上 」


函式名:Event::signal()

函式適用版本:PECL event >= 1.2.0

用法說明:Event::signal()函式用於建立一個訊號事件,並將其附加到可選的event base上。訊號事件將在接收到指定訊號時觸發回撥函式。

語法:static Event Event::signal(EventBase $base, int $signum, callable $cb[, mixed $arg = NULL])

引數:

  • $base: 可選引數,要附加事件的event base物件。如果未指定,則會使用預設的全域性事件base。
  • $signum: 必需引數,要監視的訊號編號。可以傳遞POSIX訊號常量。
  • $cb: 必需引數,一個回撥函式,當訊號發生時會被呼叫。回撥函式應具有以下簽名:void callback(int $signum, int $pid, mixed $arg)。其中,$signum引數是接收到的訊號編號,$pid是程序ID,$arg是可選引數,傳遞給Event::signal()函式的第四個引數。
  • $arg: 可選引數,傳遞給回撥函式的額外引數。

返回值:返回一個Event物件,表示建立的訊號事件。

示例:

function handleSignal($signum) {
   echo "Received signal: $signum\n";
}

$base = new EventBase();
$event = Event::signal($base, SIGINT, 'handleSignal');

$event->add();

$base->loop();

上述示例中,我們首先定義了一個回撥函式handleSignal(),用於處理接收到的訊號。接下來,我們建立了一個EventBase物件,並使用Event::signal()函式建立了一個訊號事件。該訊號事件將監聽SIGINT訊號,一旦接收到該訊號,就會呼叫回撥函式handleSignal()。然後,我們將訊號事件新增到事件迴圈中,最後透過$base->loop()來啟動事件迴圈,使得事件能夠被觸發和處理。

注意:該示例中我們使用了SIGINT訊號,即終止程序的訊號,可以根據需要更改為其他訊號。

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