php GUID生成函數(shù)和類
一、GUID簡(jiǎn)介
GUID: 即Globally Unique Identifier(全球唯一標(biāo)識(shí)符) 也稱作 UUID(Universally Unique IDentifier) 。 GUID是一個(gè)通過特定算法產(chǎn)生的二進(jìn)制長(zhǎng)度為128位的數(shù)字標(biāo)識(shí)符,用于指示產(chǎn)品的唯一性。GUID 主要用于在擁有多個(gè)節(jié)點(diǎn)、多臺(tái)計(jì)算機(jī)的網(wǎng)絡(luò)或系統(tǒng)中,分配必須具有唯一性的標(biāo)識(shí)符。
在 Windows 平臺(tái)上,GUID 廣泛應(yīng)用于微軟的產(chǎn)品中,用于標(biāo)識(shí)如如注冊(cè)表項(xiàng)、類及接口標(biāo)識(shí)、數(shù)據(jù)庫(kù)、系統(tǒng)目錄等對(duì)象。
GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每個(gè) x 是 0-9 或 a-f 范圍內(nèi)的一個(gè)32位十六進(jìn)制數(shù)。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即為有效的 GUID 值。
二、GUID的優(yōu)點(diǎn)
1.GUID在空間上和時(shí)間上具有唯一性,保證同一時(shí)間不同地方產(chǎn)生的數(shù)字不同。
2.世界上的任何兩臺(tái)計(jì)算機(jī)都不會(huì)生成重復(fù)的 GUID 值。
3.需要GUID的時(shí)候,可以完全由算法自動(dòng)生成,不需要一個(gè)權(quán)威機(jī)構(gòu)來(lái)管理。
4.GUID的長(zhǎng)度固定,并且相對(duì)而言較短小,非常適合于排序、標(biāo)識(shí)和存儲(chǔ)。
三、GUID生成函數(shù)
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);
}
}
// 三段
// 一段是微秒 一段是地址 一段是隨機(jī)數(shù)
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();
- PHP利用雪花(SnowFlake)算法生成唯一ID
- php生成唯一uid的解決方法詳解
- 高并發(fā)php uniqid不重復(fù)唯一標(biāo)識(shí)符生成方案
- 詳解php中生成標(biāo)準(zhǔn)uuid(guid)的方法
- PHP實(shí)現(xiàn)的生成唯一RequestID類完整示例
- php根據(jù)數(shù)據(jù)id自動(dòng)生成編號(hào)的實(shí)現(xiàn)方法
- 3種php生成唯一id的方法
- 使用PHP uniqid函數(shù)生成唯一ID
- php中session_id()函數(shù)詳細(xì)介紹,會(huì)話id生成過程及session id長(zhǎng)度
- php 生成唯一id的幾種解決方法
- php根據(jù)id生成10位不重復(fù)數(shù)字跟字母混合字符串
相關(guān)文章
PHP函數(shù)addslashes和mysql_real_escape_string的區(qū)別
這篇文章主要介紹了PHP函數(shù)addslashes和mysql_real_escape_string的區(qū)別,以及一個(gè)SQL注入漏洞介紹,需要的朋友可以參考下2014-04-04網(wǎng)頁(yè)游戲開發(fā)入門教程二(游戲模式+系統(tǒng))
網(wǎng)頁(yè)游戲開發(fā)入門教程二(游戲模式+系統(tǒng))2009-11-11TP5框架簡(jiǎn)單登錄功能實(shí)現(xiàn)方法示例
這篇文章主要介紹了TP5框架簡(jiǎn)單登錄功能實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP5框架登錄功能控制器、視圖、登錄驗(yàn)證等相關(guān)操作技巧,需要的朋友可以參考下2019-10-10PHP 下載文件時(shí)如何自動(dòng)添加bom頭及解釋BOM頭和去掉bom頭的方法
在utf-8編碼文件中BOM在文件頭部,占用三個(gè)字節(jié),用來(lái)標(biāo)示該文件屬于utf-8編碼,現(xiàn)在已經(jīng)有很多軟件識(shí)別bom頭,但是還有些不能識(shí)別bom頭,比如PHP就不能識(shí)別bom頭,這也是用記事本編輯utf-8編碼后執(zhí)行就會(huì)出錯(cuò)的原因了2016-01-01thinkPHP5實(shí)現(xiàn)數(shù)據(jù)庫(kù)添加內(nèi)容的方法
這篇文章主要介紹了thinkPHP5實(shí)現(xiàn)數(shù)據(jù)庫(kù)添加內(nèi)容的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了thinkPHP5數(shù)據(jù)庫(kù)的配置、模型、控制器的使用及數(shù)據(jù)插入相關(guān)操作技巧,需要的朋友可以參考下2017-10-10老生常談php中傳統(tǒng)驗(yàn)證與thinkphp框架(必看篇)
下面小編就為大家?guī)?lái)一篇老生常談php中傳統(tǒng)驗(yàn)證與thinkphp框架(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧2017-06-06Laravel validate error處理,ajax,json示例
今天小編就為大家分享一篇Laravel validate error處理,ajax,json示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-10-10PHP 傳輸會(huì)話curl函數(shù)的實(shí)例詳解
這篇文章主要介紹了PHP 傳輸會(huì)話curl函數(shù)的實(shí)例詳解的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09