• Process::alarm
    • 使用实例

    Process::alarm

    高精度定时器,是操作系统setitimer系统调用的封装,可以设置微秒级别的定时器。定时器会触发信号,需要与Process::signalpcntl_signal配合使用。

    1. function Process::alarm(int $interval_usec, int $type = ITIMER_REAL) : bool
    • $interval_usec 定时器间隔时间,单位为微秒。如果为负数表示清除定时器
    • $type 定时器类型
      • 0 表示为真实时间,触发SIGALAM信号
      • 1 表示用户态CPU时间,触发SIGVTALAM信号
      • 2 表示用户态+内核态时间,触发SIGPROF信号
    • 设置成功返回true,失败返回false,可以使用swoole_errno得到错误码
    alarm不能和Timer同时使用 alarm1.8.13或更高版本可用

    使用实例

    1. use Swoole\Process;
    2. Process::signal(SIGALRM, function () {
    3. static $i = 0;
    4. echo "#{$i}\talarm\n";
    5. $i++;
    6. if ($i > 20) {
    7. Process::alarm(-1);
    8. }
    9. });
    10. //100ms
    11. Process::alarm(100 * 1000);