php GUID生成函数和类
前端之家收集整理的这篇文章主要介绍了
php GUID生成函数和类,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
一、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的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
<div class="codetitle">
<a style="CURSOR: pointer" data="47098" class="copybut" id="copybut47098" onclick="doCopy('code47098')"> 代码如下: <div class="codebody" id="code47098">
function create_guid() {
$charid = strtoupper(md5(uniqid(mt_rand(),true)));
$hyphen = chr(45);// "-"
$uuid = chr(123)// "{"
.substr($charid,8).$hyphen
.substr($charid,8,4).$hyphen
.substr($charid,12,16,20,12)
.chr(125);// "}"
return $uuid;
}
三、GUID生成类
PHP获得GUID类:guid_class.
PHP<div class="codetitle">
<a style="CURSOR: pointer" data="38812" class="copybut" id="copybut38812" onclick="doCopy('code38812')"> 代码如下: <div class="codebody" id="code38812">
<?
PHP 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(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,8).'-'.substr($raw,4).'-'.substr($raw,20);
}
}