pcntl_alarm()的示例

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测试下看看效果)

猜你喜欢

转载自blog.csdn.net/shj_php/article/details/89236401