\Framework\UtilsSnowflake

高性能雪花 ID 生成器(优化版) - 使用 hrtime(true) 作为时间源(纳秒级,更稳定) - 修复自旋等待导致的 CPU 100% 问题 - 所有位移/常量预计算,提高性能

Summary

Methods
Properties
Constants
__construct()
nextId()
nextFixedLengthId()
No public properties found
EPOCH
WORKER_ID_BITS
DATA_CENTER_ID_BITS
SEQUENCE_BITS
MAX_WORKER_ID
MAX_DATA_CENTER_ID
MAX_SEQUENCE
WORKER_SHIFT
DATACENTER_SHIFT
TIMESTAMP_SHIFT
No protected methods found
No protected properties found
N/A
timeGen()
tilNextMillis()
$workerId
$dataCenterId
$sequence
$lastTimestamp
N/A

Constants

EPOCH

EPOCH = 1704038400000

WORKER_ID_BITS

WORKER_ID_BITS = 5

DATA_CENTER_ID_BITS

DATA_CENTER_ID_BITS = 5

SEQUENCE_BITS

SEQUENCE_BITS = 13

MAX_WORKER_ID

MAX_WORKER_ID = (1 << self::WORKER_ID_BITS) - 1

MAX_DATA_CENTER_ID

MAX_DATA_CENTER_ID = (1 << self::DATA_CENTER_ID_BITS) - 1

MAX_SEQUENCE

MAX_SEQUENCE = (1 << self::SEQUENCE_BITS) - 1

WORKER_SHIFT

WORKER_SHIFT = self::SEQUENCE_BITS

DATACENTER_SHIFT

DATACENTER_SHIFT = self::SEQUENCE_BITS + self::WORKER_ID_BITS

TIMESTAMP_SHIFT

TIMESTAMP_SHIFT = self::SEQUENCE_BITS + self::WORKER_ID_BITS + self::DATA_CENTER_ID_BITS

Properties

$workerId

$workerId : int

Type

int

$dataCenterId

$dataCenterId : int

Type

int

$sequence

$sequence : int

Type

int

$lastTimestamp

$lastTimestamp : int

Type

int

Methods

__construct()

__construct(int  $workerId, int  $dataCenterId) : mixed

Parameters

int $workerId
int $dataCenterId

Returns

mixed —

nextId()

nextId() : int

生成一个全局唯一雪花 ID

Returns

int —

nextFixedLengthId()

nextFixedLengthId(int  $length) : string

固定长度 ID

Parameters

int $length

Returns

string —

timeGen()

timeGen() : int

使用 hrtime() 生成更精准的毫秒时间戳

Returns

int —

tilNextMillis()

tilNextMillis(int  $lastTimestamp) : int

等待下一毫秒(避免 CPU 自旋)

Parameters

int $lastTimestamp

Returns

int —