pcntl_alarm — 为进程设置一个alarm闹钟信号
创建一个计时器,在指定的秒数后向进程发送一个SIGALRM
信号。每次对 pcntl_alarm()的调用都会取消之前设置的alarm信号。
<?php
pcntl_signal(SIGALRM, function () {
pcntl_alarm(2);
echo 'Received an alarm signal !' . PHP_EOL;
}, false);
pcntl_alarm(2);
while (true) {
pcntl_signal_dispatch();
sleep(1);
}
上面程序的执行流程是:
1、首先pcntl_signal()函数注册一个SIGALRM信号到它的第二个参数(闭包函数)上去。-----意思就是:当你收到这个SIGALRM信号后,执行那个闭包函数。(首先,先去掉闭包函数中的 pcntl_alarm(2); 这一项,然后再加上这一项,两次做对比可以看大不同)然后闭包函数中是echo了一个字符串。
2、pcntl_alarm(2)的含义是,系统就会在 2 秒之后给当前进程发一个SIGALRM信号
3、一直循环调用pcntl_signal_dispatch()函数,去捕捉传进来的信号
4、捕捉到信息后,执行第一个中的闭包函数,该函数echo字符串后,再次调用pcntl_alrm(2),然后在过2秒钟后再次向当前进程发送一个SIGALRM信号,如果往复...(可以在linux命令行用:php demo.php测试下看看效果)