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 相关文章推荐
特转载一高手总结PHP学习资源和链接.
Dec 05 PHP
中篇:安装及配置PHP
Dec 13 PHP
PHP 身份验证方面的函数
Oct 11 PHP
php join函数应用
May 04 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
基于PHP中的常用函数回顾
Jul 11 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
php格式文件打开的四种方法
Feb 24 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
第五节 克隆 [5]
2006/10/09 PHP
php字符串截取中文截取2,单字节截取模式
2007/12/10 PHP
分享一个PHP数据流应用的简单例子
2012/06/01 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
创建一个复制UBB软件信息的链接或按钮的js代码
2008/01/06 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
js中的闭包学习心得
2018/02/06 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
浅析JavaScript 函数柯里化
2020/09/08 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
python多线程方式执行多个bat代码
2016/06/07 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
详解python读取image
2019/04/03 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
使用keras内置的模型进行图片预测实例
2020/06/17 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
python 读取、写入txt文件的示例
2020/09/27 Python
Django数据统计功能count()的使用
2020/11/30 Python
美国最灵活的移动提供商:Tello
2017/07/18 全球购物
六年级数学教学反思
2014/02/03 职场文书
质检部经理岗位职责
2014/02/19 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
销售口号大全
2014/06/11 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
javascript的setTimeout()使用方法总结
2021/11/20 Javascript