牛牛在线工具

pcntl_signal()

收录 8868 个 PHP 函数,含用途说明与用法示例。

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