如何生成一个全局唯一的id

 时间:2026-02-18 04:37:31

1、在php中,我们可以用php自带的uniqid函数来生成一个唯一的ID,该函数是基于当前时间来生成的,以微秒来计算,代码如图,我们循环生成10个ID,看是否唯一。

如何生成一个全局唯一的id

2、运行下页面,得到结果如图

如何生成一个全局唯一的id

3、uniqid函数还接受二个参数,第一个参数是一个前缀符,我们可以添加一个符号在每个ID前面。第二个参数是指示是否生成更长的字符。

//function uniqid ($prefix = "", $more_entropy = false) {}

修改下代码,传入这二个参数,如图。

如何生成一个全局唯一的id

4、再次运行,得到结果

如何生成一个全局唯一的id

5、由于uniqid函数是基于当前时间来生成的,当你系统的并发量很大时,那是有可能在同一个微秒触发生成二个ID的可能性,所以这个方法是有可能生成二个相同的ID的,(虽然这个概率很低很低)

基于上面说的,我们可以添加一个前缀,因为同一个用户在同一微秒要操作二次生成ID的机会是微乎其微的,所以这个前缀我们可以用用户ID来做,如果用户没登陆时,就用一个四位数的随机数来代替,这样保证唯一性就安全很多了。

如何生成一个全局唯一的id

6、再次运行页面,我们可以得到这个更多位数的安全唯一ID,因为前缀用的是用户ID,该ID是数据的自增长主键列,肯定是唯一的。

如何生成一个全局唯一的id

7、如果上面的生成方法都不满足你系统的要求,你要严格保证每个ID都是唯一性的,绝对不能有重复的,那么我们也是有办法的。

那就是先用uniqid函数生成一批ID,保存在数据库里,生成完后,再通过sql语句把数据库相同的ID去掉(如果有的话)。

那么当我们需要唯一ID时,就从数据库里取一个出来,取出后,标志该条数据为已取,这样则能绝对保证ID是唯一的了。

如何生成一个全局唯一的id

  • 睡眠的重要性
  • 印象笔记如何新建笔记
  • 如何使用word查找,替换,定位
  • 如何合理安排大学生的假期
  • 生鲜配送存在的问题?
  • 热门搜索
    航空知识 白附子的功效与作用 什么是癔病 若即若离什么意思 右眼跳代表什么 什么是上证指数 生牡蛎的功效与作用 酸梅汤的功效与作用 交通安全知识竞赛 2016什么年