最新版 swoole 进程信号问题

这是我的代码test.php

<?php

swoole_process::signal(SIGALRM,function (){
    echo "1\n";
});

swoole_process::alarm(100*1000);

然后执行文件,并没有输出任何信息,直接退出了、这是为什么。最新版swoole的什么机制吗,官方文档上没有找到说明

root@0327ee891212:/var/www/swoole2# php test.php
root@0327ee891212:/var/www/swoole2#

最新版swoole 有没有大佬解下惑

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

swoole 版本多少,4.4+ signal 监听不会加入事件循环了,也就是程序会自动退出。。。

4年前 评论
Littlesqx (作者) 4年前
讨论数量: 5

你的两份代码我都试过了,都是有输出的,我有点怀疑你的swoole扩展是不是没装成功?执行一下php -m|grep swoole看看?

4年前 评论
JaguarJack

信号注册异步,你脚本都结束了, 信号自然捕获不到

4年前 评论
JaguarJack (作者) 4年前

@JaguarJack

<?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);

sleep(3);

然后:
输出alarm clock 就结束了。

root@687d4c789947:/var/www/swoole2# php test.php
Alarm clock
root@687d4c789947:/var/www/swoole2#
4年前 评论

@佛系Coder 问题解决了么,我是直接在CentOS 7上运行你的代码,没发现有问题

4年前 评论
佛系Coder (楼主) 4年前

swoole 版本多少,4.4+ signal 监听不会加入事件循环了,也就是程序会自动退出。。。

4年前 评论
Littlesqx (作者) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!