php GUID生成函数和类

2015-01-24信息快讯网

这篇文章主要介绍了使用php生成GUID的方法,分别使用了函数和类的方式生成GUID,详细介绍了什么是GUID、GUID的优点等,需要的朋友可以参考下

一、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();

phpword插件导出word文件时中文乱码问题处理方案
PHP防止表单重复提交的几种常用方法汇总
PHP中单引号与双引号的区别分析
php版本的cron定时任务执行器使用实例
PHP框架Swoole定时器Timer特性分析
php中Session的生成机制、回收机制和存储机制探究
PHP生成数组再传给js的方法
完善CodeIgniter在IDE中代码提示功能的方法
PHP生成指定长度随机数最简洁的方法
PHP实现生成透明背景的PNG缩略图函数分享
PHP生成短网址的3种方法代码实例
php去掉URL网址中带有PHPSESSID的配置方法
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
PHP数字和字符串ID互转函数(类似优酷ID)
PHP获取MySql新增记录ID值的3种方法
ThinkPHP的Widget扩展实例
yii框架builder、update、delete使用方法
PHP包含文件函数include、include_once、require、require_once区别总结
easyui的tabs update正确用法分享
PHP文件大小格式化函数合集
PHP加Nginx实现动态裁剪图片方案
php实现文件下载简单示例(代码实现文件下载)
php实现文件编码批量转换
php导出word文档与excel电子表格的简单示例代码
php 创建以UNIX时间戳命名的文件夹(示例代码)
php 生成自动创建文件夹并上传文件的示例代码
php中require和require_once的区别说明
php生成excel文件的简单方法
php 根据url自动生成缩略图并处理高并发问题
php 生成短网址原理及代码
php使用qr生成二维码的示例分享
php获取淘宝分类id示例
PHP修改session_id示例代码
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
PHP中include与require使用方法区别详解
对淘宝URL中ID提取的PHP代码
PHP实现把数字ID转字母ID
请离开include_once和require_once
php生成局部唯一识别码LUID的代码
©2014-2024 dbsqp.com