English | 简体中文 | 繁體中文
查询

pcntl_signal()函数—用法及示例

「 设置信号处理函数,当接收到指定的信号时,会调用相应的处理函数 」


函数名:pcntl_signal()

适用版本:PHP 4 >= 4.1.0, PHP 5, PHP 7

函数描述:pcntl_signal()函数用于设置信号处理函数,当接收到指定的信号时,会调用相应的处理函数。

用法:

bool pcntl_signal ( int $signo , callable|int $handler [, bool $restart_syscalls = TRUE ] )

参数:

  • $signo:指定的信号编号,可以是预定义的常量如SIGINT,也可以是整数。
  • $handler:指定的信号处理函数,可以是一个可调用的函数名或闭包,也可以是一个整数。若为整数,表示采用默认的信号处理函数。
  • $restart_syscalls(可选):指定是否在信号处理函数结束后重新启动系统调用,默认为TRUE。

返回值:成功时返回TRUE,失败时返回FALSE。

示例:

// 定义信号处理函数
function signalHandler($signo) {
    switch ($signo) {
        case SIGINT:
            echo "接收到 SIGINT 信号\n";
            // 执行相应的操作
            break;
        case SIGTERM:
            echo "接收到 SIGTERM 信号\n";
            // 执行相应的操作
            break;
        // 其他信号处理
    }
}

// 设置信号处理函数
pcntl_signal(SIGINT, 'signalHandler');
pcntl_signal(SIGTERM, 'signalHandler');

// 模拟进程运行
while (true) {
    // 执行任务
    // ...
    
    // 检查是否收到信号,如果收到则调用信号处理函数
    pcntl_signal_dispatch();
    
    // 其他操作
    // ...
}

在上面的示例中,我们定义了一个signalHandler()函数作为信号处理函数,它会根据接收到的信号类型执行相应的操作。然后使用pcntl_signal()函数来设置SIGINT和SIGTERM信号的处理函数为signalHandler()。在进程运行过程中,通过调用pcntl_signal_dispatch()函数来检查是否收到信号,并触发对应的信号处理函数。

补充纠错
上一个函数: pcntl_signal_dispatch()函数
下一个函数: pcntl_setpriority()函数
热门PHP函数
分享链接