php swoole定时器

2021-10-02

alarm不能和Timer同时使用

use Swoole\Process;
use function Swoole\Coroutine\run;

run(function () {
    Process::signal(SIGALRM, function () {
        static $i = 0;
        echo "#{$i}\talarm\n";
        $i++;
        if ($i > 20) {
            // 停止定时器
            Process::alarm(-1);
            // 向指定pid进程发送信号,默认发送0,检测进程是否存在
            Process::kill(getmypid());
        }
    });

    // 设置定时器间隔时间,单位为微妙
    // 可以设置定时器类型 0为真实时间(默认) 1为cpu内核时间 2为用户态+内核态时间
    Process::alarm(100 * 1000);

    while(true) {
        sleep(0.5);
    }
});

 

{/if}