问答 / 1 / 13 / 创建于 3年前 / 1 个改进
搜了一下,有一下方法
md5(time() . mt_rand(1,1000000)); md5(uniqid());
还有其它好的方法吗?
雪花算法,自己搜一下
uuid和雪花算法,目前做分布式id的这两个比较多,不过我个人还是倾向于md5
一般来说雪花是最好的,具体可以参考 hyperf/snowflake, 不过基础场景 date('Ymd') . time() . microtime() . Str::random(random_int()) 就足够用了。
hyperf/snowflake
date('Ymd') . time() . microtime() . Str::random(random_int())
microtime()
time()
date('Ymd')
Str::random(random_int())
好不容易获得了一点唯一性,全被md5毁了 :joy:
我个人觉得还不如用直接用 microtime()
$uniqid = substr(uniqid(), 5, 13); $random = str_pad(random_int(0, 9999), 4, '0', STR_PAD_LEFT); echo sprintf('%s%s%s', date('YmdHis'), $random, $uniqid);
php 内置了 ,非要简单的问题复杂化
uniqid('',true) // or random_bytes(n)
我们有用到的一个
intval(microtime(true) * 10000) . (getmypid() % 10) . sprintf('%04d', rand(0, 9999));
gitee.com/modstart/ModStartCMS/blo...
return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT) . substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
我要举报该,理由是:
雪花算法,自己搜一下
uuid和雪花算法,目前做分布式id的这两个比较多,不过我个人还是倾向于md5
一般来说雪花是最好的,具体可以参考
hyperf/snowflake
, 不过基础场景date('Ymd') . time() . microtime() . Str::random(random_int())
就足够用了。好不容易获得了一点唯一性,全被md5毁了 :joy:
我个人觉得还不如用直接用 microtime()
php 内置了 ,非要简单的问题复杂化
我们有用到的一个
gitee.com/modstart/ModStartCMS/blo...