萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php GUID生成函數和類

php GUID生成函數和類

 這篇文章主要介紹了使用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生成函數   代碼如下: 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     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類使用方法:   代碼如下: require_once("guid.class.php");     $Guid = new Guid();     print $Guid->toString();  
copyright © 萬盛學電腦網 all rights reserved