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