函數(shù)名稱:EvLoop::signal()
適用版本:Ev 4.0.0+
說明:EvLoop::signal()函數(shù)用于在事件循環(huán)中添加信號處理器,以響應(yīng)系統(tǒng)中特定信號的觸發(fā)。
用法:
void EvLoop::signal(int $signum, callable $callback [, mixed $data = NULL ])
參數(shù):
- $signum:整數(shù)值,表示要監(jiān)聽的信號編號。
- $callback:回調(diào)函數(shù),當(dāng)信號被觸發(fā)時(shí)執(zhí)行。
- $data(可選):可選參數(shù),可以傳遞給回調(diào)函數(shù)的附加數(shù)據(jù)。
返回值:無返回值。如果發(fā)生錯(cuò)誤,將拋出一個(gè)異常。
示例:
// 創(chuàng)建一個(gè)事件循環(huán)對象
$loop = new EvLoop();
// 定義一個(gè)信號處理器函數(shù)
function handleSignal($signum, $w) {
switch($signum) {
case SIGINT:
echo "SIGINT信號被觸發(fā)\n";
break;
case SIGTERM:
echo "SIGTERM信號被觸發(fā)\n";
break;
}
// 停止事件循環(huán)
Ev::stop();
}
// 添加信號處理器到事件循環(huán)
$loop->signal(SIGINT, 'handleSignal');
$loop->signal(SIGTERM, 'handleSignal');
// 開始事件循環(huán)
$loop->run();
以上示例中,我們創(chuàng)建了一個(gè)事件循環(huán)對象$loop,并定義了一個(gè)信號處理器函數(shù)handleSignal()。然后,我們使用EvLoop::signal()函數(shù)將信號處理器添加到事件循環(huán)中。當(dāng)SIGINT或SIGTERM信號被觸發(fā)時(shí),handleSignal()函數(shù)將被執(zhí)行。最后,通過調(diào)用$loop->run()開始事件循環(huán),直到接收到SIGINT或SIGTERM信號并執(zhí)行相應(yīng)的處理代碼后停止事件循環(huán)。