zoukankan      html  css  js  c++  java
  • php 生成唯一id的几种解决方法

    php 生成唯一id的几种解决方法

     

    网上查了下,有很多的方法

    1、md5(time() . mt_rand(1,1000000));

      这种方法有一定的概率会出现重复

    2、php内置函数uniqid()

      uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID.

      w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数"。

      下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function uuid() {
        if (function_exists ( 'com_create_guid' )) {
            return com_create_guid ();
        else {
            mt_srand ( ( double ) microtime () * 10000 ); //optional for php 4.2.0 and up.随便数播种,4.2.0以后不需要了。
            $charid strtoupper ( md5 ( uniqid ( rand (), true ) ) ); //根据当前时间(微秒计)生成唯一id.
            $hyphen chr ( 45 ); // "-"
            $uuid '' //chr(123)// "{"
    substr $charid, 0, 8 ) . $hyphen substr $charid, 8, 4 ) . $hyphen substr $charid, 12, 4 ) . $hyphen substr $charid, 16, 4 ) . $hyphen substr $charid, 20, 12 );
            //.chr(125);// "}"
            return $uuid;
        }
    }

    com_create_guid()是php自带的生成唯一id方法,php5之后貌似已经没有了。
    3、官方uniqid()参考手册有用户提供的方法,结果类似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public function create_guid($namespace '') {    
        static $guid '';
        $uid = uniqid("", true);
        $data $namespace;
        $data .= $_SERVER['REQUEST_TIME'];
        $data .= $_SERVER['HTTP_USER_AGENT'];
        $data .= $_SERVER['LOCAL_ADDR'];
        $data .= $_SERVER['LOCAL_PORT'];
        $data .= $_SERVER['REMOTE_ADDR'];
        $data .= $_SERVER['REMOTE_PORT'];
        $hash strtoupper(hash('ripemd128'$uid $guid . md5($data)));
        $guid '{' .  
                substr($hash,  0,  8) .
                '-' .
                substr($hash,  8,  4) .
                '-' .
                substr($hash, 12,  4) .
                '-' .
                substr($hash, 16,  4) .
                '-' .
                substr($hash, 20, 12) .
                '}';
        return $guid;
      }
     
     
    标签: phpuuid主键
  • 相关阅读:
    Linux下sed,awk,grep,cut,find学习笔记
    Python文件处理(1)
    KMP详解
    Java引用详解
    解决安卓中页脚被输入法顶起的问题
    解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
    null id in entry (don't flush the Session after an exception occurs)
    HQL中的Like查询需要注意的地方
    spring mvc controller间跳转 重定向 传参
    node to traverse cannot be null!
  • 原文地址:https://www.cnblogs.com/u0mo5/p/4973746.html
Copyright © 2011-2022 走看看