这是我的代码 test.php
<?php
swoole_process::signal(SIGALRM,function (){
echo "1\n";
});
swoole_process::alarm(100*1000);
然后执行文件,并没有输出任何信息,直接退出了、这是为什么。
root@0327ee891212:/var/www/swoole2# php test.php
root@0327ee891212:/var/www/swoole2#
改成官网的示例:
<?php
use Swoole\Process;
Process::signal(SIGALRM, function () {
static $i = 0;
echo "#{$i}\talarm\n";
$i++;
if ($i > 20) {
Process::alarm(-1);
}
});
//100ms
Process::alarm(100 * 1000);
依然不行.
本人刚学 swoole 有没有大佬解下惑.本地使用的是laradock环境
你的程序只监听了一个信号,而最新版本不会将信号监听作为 EventLoop Block 的条件了,因此进程会立即退出。你可以添加一个 STDIN 可读事件监听。