博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 用户注册表设计,用户ID类型GUID
阅读量:5124 次
发布时间:2019-06-13

本文共 846 字,大约阅读时间需要 2 分钟。

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

你可能感兴趣的文章
Python简介
查看>>
VS2010安装异常中断后无法安装的解决方法(安装时发生严重错误)
查看>>
HOG特征人体检测
查看>>
SRM 698 div1 RepeatString
查看>>
EasyDarwin开源手机直播方案:EasyPusher手机直播推送,EasyDarwin流媒体服务器,EasyPlayer手机播放器...
查看>>
React Native 开发环境搭建
查看>>
冒泡排序
查看>>
python全栈学习总结三:函数学习
查看>>
【4.0】jdbcTemplate
查看>>
redis 分布式锁实现
查看>>
屏幕尺寸
查看>>
hashtable和hashmap的区别?
查看>>
sprintf_s与_snprintf与_snprintf_s
查看>>
let 和const
查看>>
返回顶部
查看>>
ubuntu16 深度学习环境搭建步骤
查看>>
scrollWidth,clientWidth,offsetWidth的区别
查看>>
在mybatis中调oracle dblink存储过程
查看>>
面向对象--内置方法
查看>>
Java-ArrayList和Vector的区别
查看>>