Process::alarm
高精度定时器,是操作系统setitimer
系统调用的封装,可以设置微秒级别的定时器。定时器会触发信号,需要与Process::signal
或pcntl_signal
配合使用。
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
同时使用alarm
在1.8.13
或更高版本可用
使用实例
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);