pcntl_signal()

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

首字母:P

函数名: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()函数来检查是否收到信号,并触发对应的信号处理函数。

同首字母函数