php guid生成函数 php生成唯一标识符

发布时间:2020-11-15编辑:脚本学堂
本文介绍下php生成guid的方法,分别使用php函数和类的方式生成guid,并介绍什么是guid、guid的优点等,大家做个参考。

一、guid简介
guid: 即globally unique identifier(全球唯一标识符) 也称作 uuid(universally unique identifier) 。

guid是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。guid 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。
在 windows 平台上,guid 广泛应用于微软的产品中,用于标识如如注册表项、类及接口标识、数据库、系统目录等对象。

guid 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。
例如:6f9619ff-8b86-d011-b42d-00c04fc964ff 即为有效的 guid 值。

二、guid的优点
1.guid在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。
2.世界上的任何两台计算机都不会生成重复的 guid 值。
3.需要guid的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
4.guid的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

三、guid生成函数
 

复制代码 代码示例:
function create_guid() {
    $charid = strtoupper(md5(uniqid(mt_rand(), true)));
    $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;
}

三、guid生成类
php获得guid类:guid_class.php
 

复制代码 代码示例:
<?php
//获取guid
//事理:www.jb200.com
class system   
{   
    function currenttimemillis()   
    {   
        list($usec, $sec) = explode(" ",microtime());   
        return $sec.substr($usec, 2, 3);   
    }   
}   
class netaddress   
{   
    var $name = 'localhost';   
    var $ip = '127.0.0.1';   
    function getlocalhost() // static   
    {   
        $address = new netaddress();   
        $address->name = $_env["computername"];   
        $address->ip = $_server["server_addr"];   
        return $address;   
    }   
    function tostring()   
    {   
        return strtolower($this->name.'/'.$this->ip);   
    }   
}   
class random   
{   
    function nextlong()   
    {   
        $tmp = rand(0,1)?'-':'';   
        return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);   
    }   
}   
// 三段   
// 一段是微秒 一段是地址 一段是随机数   
class guid   
{   
    var $valuebeforemd5;   
    var $valueaftermd5;   
    function guid()   
    {   
        $this->getguid();   
    }   
    //   
    function getguid()   
    {   
        $address = netaddress::getlocalhost();   
        $this->valuebeforemd5 = $address->tostring().':'.system::currenttimemillis().':'.random::nextlong();   
        $this->valueaftermd5 = md5($this->valuebeforemd5);   
    }   
    function newguid()   
    {   
        $guid = new guid();   
        return $guid;   
    }   
    function tostring()   
    {   
        $raw = strtoupper($this->valueaftermd5);   
        return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);   
    }   
}
 

调用示例,guid类使用方法:
 

复制代码 代码示例:
<?php
require_once("guid.class.php");   
$guid = new guid();   
print $guid->tostring();