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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
一个程序下载的管理程序(四)
Oct 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
调整PHP的性能
Oct 30 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
php解决约瑟夫环示例
Apr 09 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
前端必学之PHP语法基础
Jan 01 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 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获取当前页面完整URL的实现代码
2013/06/10 PHP
php截取html字符串及自动补全html标签的方法
2015/01/15 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
javascript闭包功能与用法实例分析
2017/04/06 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
JavaScript动画实例之粒子文本的实现方法详解
2020/07/28 Javascript
Python中threading模块join函数用法实例分析
2015/06/04 Python
python实现的系统实用log类实例
2015/06/30 Python
Python操作MySQL数据库的方法
2018/06/20 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Elasticsearch py客户端库安装及使用方法解析
2020/09/14 Python
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
外语专业毕业生个人的自荐信
2013/11/19 职场文书
培训主管的职业生涯规划
2014/03/06 职场文书
商务经理岗位职责
2014/07/30 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
质量整改报告范文
2014/11/08 职场文书
营销计划书
2015/01/17 职场文书
食品药品安全责任书
2015/05/11 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL