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

2025-04-28 16:08:37

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
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢