php制作雪花墙,基于php雪花算法-生成唯一Id

不多说直接上代码

class Idcreate

{

const EPOCH = 1479533469655;    //开始时间,固定一个小于当前时间的毫秒数

const max12bit = 1024;

const max41bit = 1099511627888;

static $machineId = null;      // 机器id

public static function machineId($mId = 0)

{

self::$machineId = $mId;

}

public static function createOnlyId()

{

// 时间戳 42字节

$time = floor(microtime(true) * 1000);

// 当前时间 与 开始时间 差值

$time -= self::EPOCH;

// 二进制的 毫秒级时间戳

$base = decbin(self::max41bit + $time);

// 机器id  10 字节

if(!self ::$machineId) {

$machineid = self ::$machineId;

} else {

$machineid = str_pad(decbin(self ::$machineId),10,"0",STR_PAD_LEFT);

}

// 序列数 12字节

$random = str_pad(decbin(mt_rand(0,self::max12bit)),12,"0",STR_PAD_LEFT);

// 拼接

$base = $base . $machineid . $random;

// 转化为 十进制 返回

return bindec($base);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值