8、PHP 原生魅力 - 系统功能 - 信号监听

作者: 温新

图书: 【原生 PHP 魅力】

阅读: 176

时间: 2024-09-08 00:06:22

操作系统可以通过信号正在运行中的进程通信。操作系统使用信号来告诉进程一些信息,如“我想停止你的执行”。如用户想要停止进行的执行,可以使用 shell 命令 kill 或者 CTRL + C 来告诉操作系统向目标进行发送一个信号。

在 PHP 脚本中,如果想检测脚本什么时候收到信号,可以使用pcntl_signal()函数。第一个参数是要想检查的信号,第二个参数是在脚本收到信号时执行的自定义函数。

<?php

declare(ticks = 1);

echo '正在安装信号处理程序...' . PHP_EOL;

/**
 * 监听 SIGINT 信号
 * 
 * 使用方法:
 *  - kill 命令
 *  - CTRL + C
 */
pcntl_signal(SIGINT, function ($signal) {
    echo '接收到  SIGINT 信号, -' . $signal . '-' . PHP_EOL;
});

sleep(30);
echo '结束' . PHP_EOL;

运行如下:

$ php 8-signal.php 
正在安装信号处理程序...
^C接收到  SIGINT 信号, -2-
结束

使用 CTRL + C 发送一个信号,结束程序运行。

请登录后再评论