函式名: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訊號,即終止程序的訊號,可以根據需要更改為其他訊號。