php 用户注册表设计,用户ID类型GUID

1,用户表用户id的问题。我大多数情况下采用的都是自增的int型id,这样储存空间占用小。但是存在一个缺陷,就是int最大是11位数容易超出。还有一个弊端就是数据迁移的时候,比如用户注册在两台机器上,两个自增的ID,合并的时候只能把一个表的数据放另外一个的后面,这样引起用户混乱,还有就是拆分的时候,也容易出现诸如此类的问题。

解决方案:所用用户注册在一个数据库,需要分库的时候,只有拆分操作。

 

2,为了避免数据可能出现的拆分问题,还有一种方式是md5加密一个字符串,拼接一个衍值,这个值通常是用时间戳和rand随机数。但是这会有个缺陷,就是同一时间注册的两个用户,随机数也可能一样,导致用户混淆,但是这个概率非常小。

3,GUID 是全局唯一标示符,理想情况下是全球唯一的,代码如下:

<?php
function create_guid(){
  $charid = strtoupper(md5(uniqid(mt_rand(),true)));
  $hypen = chr(45);
  $uuid = substr($charid,6,2).substr($charid,4,2).
  substr($charid,2,2).substr($charid,0,2).$hypen.
  substr($charid,10,2).substr($charid,0,2).$hypen
  .substr($charid,14,2).substr($charid,12,2).$hypen
  .substr($charid, 16,4).$hypen.substr($charid, 20,12);
  return $uuid;
}
$uid = create_guid();
var_dump($uid);

以上情况记录一下,具体使用哪一种方式?根据不同的项目需求选择吧。

转载于:https://www.cnblogs.com/ayanboke/p/9728430.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值