zoukankan      html  css  js  c++  java
  • 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);

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

  • 相关阅读:
    Static Fields and Methods
    usermod
    理解Java的Class类、"this."关键字、Constructor构造器(一)
    [REPRINT] Java 101: Classes and objects in Java
    第六章 Java并发容器和框架
    第五章 Java中锁
    第四章 Java并发编程基础
    第三章 Java内存模型(下)
    第三章 Java内存模型(上)
    第二章 并发机制的底层实现原理
  • 原文地址:https://www.cnblogs.com/ayanboke/p/9728430.html
Copyright © 2011-2022 走看看