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 13 PHP
php桌面中心(四) 数据显示
Mar 11 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
Feb 03 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
Jun 30 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
php实现算术验证码功能
Dec 05 PHP
phpfpm的作用和用法
Oct 10 PHP
PHP中mysqli_get_server_version()的实例用法
Feb 03 PHP
WordPress伪静态规则设置代码实例
Dec 10 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
phpmyadmin操作流程
2006/10/09 PHP
PHP 数据库树的遍历方法
2009/02/06 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
PHP curl使用实例
2015/07/02 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
python3 flask实现文件上传功能
2020/03/20 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
Betsey Johnson官网:妖娆可爱的连衣裙及鞋子、手袋和配件
2016/12/30 全球购物
数控技术专业推荐信
2013/11/01 职场文书
国家助学金获奖感言
2014/01/31 职场文书
学生会主席竞聘书
2014/03/31 职场文书
学校献爱心活动总结
2014/07/08 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
教师思想工作总结2015
2015/05/13 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
庆七一主持词
2015/06/29 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers
MySQL 字符集 character
2022/05/04 MySQL