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模板页面中分页代码的解析
Feb 06 PHP
jQuery 源码分析笔记
May 25 PHP
PHP中遍历stdclass object的实现代码
Jun 09 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
Nov 07 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
ThinkPHP 整合Bootstrap Ajax分页样式
Dec 23 PHP
Yii2表单事件之Ajax提交实现方法
May 04 PHP
PHP+原生态ajax实现的省市联动功能详解
Aug 15 PHP
Laravel框架实现的批量删除功能示例
Jan 16 PHP
Laravel框架实现多个视图共享相同数据的方法详解
Jul 09 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 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
一个SQL管理员的web接口
2006/10/09 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
php绘制一个矩形的方法
2015/01/24 PHP
Yii2中datetime类的使用
2016/12/17 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
Firefox和IE兼容性问题及解决方法总结
2013/10/08 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
js实现html滑动图片拼图验证
2020/06/24 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
python使用beautifulsoup从爱奇艺网抓取视频播放
2014/01/23 Python
在Mac OS上使用mod_wsgi连接Python与Apache服务器
2015/12/24 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
python处理excel绘制雷达图
2019/10/18 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
国际贸易专业个人求职信格式
2014/02/02 职场文书
应届毕业生通用的自荐书范文
2014/02/07 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
烹饪自我鉴定
2014/03/01 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
python中的getter与setter你了解吗
2022/03/24 Python