php GUID生成函数和类


Posted in PHP onMarch 10, 2014

一、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();
PHP 相关文章推荐
c#中的实现php中的preg_replace
Dec 21 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 #PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 #PHP
php实现文件编码批量转换
Mar 10 #PHP
php导出word文档与excel电子表格的简单示例代码
Mar 08 #PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
Mar 08 #PHP
PHP_Cooikes不同页面无法传递的解决方法
Mar 07 #PHP
php function用法如何递归及return和echo区别
Mar 07 #PHP
You might like
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
PHP微信开发之二维码生成类
2015/06/26 PHP
各种快递查询--Api接口
2016/04/26 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
ajax读取数据后使用jqchart显示图表的方法
2015/06/10 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
Python如何获取系统iops示例代码
2016/09/06 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python 加密与解密小结
2018/12/06 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
Python简易计算器制作方法代码详解
2019/10/31 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
scrapy-splash简单使用详解
2021/02/21 Python
介绍Ibatis的核心类
2013/11/18 面试题
总经理岗位职责
2013/11/09 职场文书
会计专业个人求职信范文
2014/01/08 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
年度考核自我评价
2014/01/25 职场文书
美术教师自我鉴定
2014/02/12 职场文书
网络技术专业推荐信
2014/02/20 职场文书
2014年服务员工作总结
2014/11/18 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
党小组鉴定意见
2015/06/02 职场文书
Consul在linux环境的集群部署
2022/04/08 Servers