当前位置:首页 > PHP教程 > php高级应用 > 列表

php GUID生成函数和类

发布:smiling 来源: PHP粉丝网  添加日期:2020-10-20 10:53:32 浏览: 评论:0 

这篇文章主要介绍了使用php生成GUID的方法,分别使用了函数和类的方式生成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生成函数,代码如下:

  1. function create_guid() { 
  2.     $charid = strtoupper(md5(uniqid(mt_rand(), true))); 
  3.     $hyphen = chr(45);// "-" 
  4.     $uuid = chr(123)// "{" 
  5.     .substr($charid, 0, 8).$hyphen 
  6.     .substr($charid, 8, 4).$hyphen 
  7.     .substr($charid,12, 4).$hyphen 
  8.     .substr($charid,16, 4).$hyphen 
  9.     .substr($charid,20,12) 
  10.     .chr(125);// "}" 
  11.     return $uuid

三、GUID生成类

PHP获得GUID类:guid_class.php,代码如下:

  1. <?php     
  2. class System     
  3. {     
  4.     function currentTimeMillis()     
  5.     {     
  6.         list($usec$sec) = explode(" ",microtime());     
  7.         return $sec.substr($usec, 2, 3);     
  8.     }     
  9. }     
  10. class NetAddress     
  11. {     
  12.     var $Name = 'localhost';     
  13.     var $IP = '127.0.0.1';     
  14.     function getLocalHost() // static     
  15.     {     
  16.         $address = new NetAddress();     
  17.         $address->Name = $_ENV["COMPUTERNAME"];     
  18.         $address->IP = $_SERVER["SERVER_ADDR"];     
  19.         return $address;     
  20.     }     
  21.     function toString()     
  22.     {     
  23.         return strtolower($this->Name.'/'.$this->IP);     
  24.     }     
  25. }     
  26. class Random     
  27. {     
  28.     function nextLong()     
  29.     {     
  30.         $tmp = rand(0,1)?'-':'';     
  31.         return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);     
  32.     }     
  33. }     
  34. // 三段     
  35. // 一段是微秒 一段是地址 一段是随机数     
  36. class Guid     
  37. {     
  38.     var $valueBeforeMD5;     
  39.     var $valueAfterMD5;     
  40.     function Guid()     
  41.     {     
  42.         $this->getGuid();     
  43.     }     
  44.     //     
  45.     function getGuid()     
  46.     {     
  47.         $address = NetAddress::getLocalHost();     
  48.         $this->valueBeforeMD5 = $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();     
  49.         $this->valueAfterMD5 = md5($this->valueBeforeMD5);     
  50.     }     
  51.     function newGuid()     
  52.     {     
  53.         $Guid = new Guid();     
  54.         return $Guid;     
  55.     } //phpfensi.com 
  56.     function toString()     
  57.     {     
  58.         $raw = strtoupper($this->valueAfterMD5);     
  59.         return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);     
  60.     }     

GUID类使用方法:

  1. require_once("guid.class.php");     
  2. $Guid = new Guid();     
  3. print $Guid->toString(); 

Tags: GUID生成函数

分享到: