PHP GUID和UUID生成类
<?php class Guid{/** * 系统当前时间*/private static function _curTimeMillis() { list($usec, $sec) = explode(" ",microtime());return $sec.substr($usec, 2, 3); } /** * 客户端相关信息*/private static function _getHost() {$name = empty($_SERVER["HTTP_USER_AGENT"]) ? 'localhost' : $_SERVER["HTTP_USER_AGENT"];return strtolower($name . '/' . self::_clientIp()); } /** * 客户端IP*/private static function _clientIp() {$ip = (@$_SERVER['HTTP_REALIP']) ? $_SERVER['HTTP_REALIP'] : ((@$_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : @$_SERVER['REMOTE_ADDR']); if (empty($ip)) $ip = '0.0.0.0';return $ip; } /** * 随机数*/private static function _random() {$tmp = rand(0,1) ? '-' : '';return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999); } /** * 生成GUID字符串 * (长度:32 + 4) * 三段:一段是微秒, 一段是地址, 一段是随机数*/public static function toString() {if (function_exists('com_create_guid')) {return com_create_guid(); } else {$string = md5(self::_getHost() . ':' . self::_curTimeMillis() . ':' . self::_random());$raw = strtoupper($string);return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20); } }} ------------------------------------------------class Uuid{private $_yearCode = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T');const START_YEAR = 2011; /** * 组成结构:年份(1个字符),月份(1个字符[十六进制]),日(2个字符),时间戳(后5字符),微秒(6个字符),随机数(3个字符) = 18个字符*/public static function make() {return $this->_yearCode[intval(date('Y')) - self::START_YEAR].strtoupper(dechex(date('m'))) . date('d') .substr(time(), -5) . substr(microtime(), 2, 6) . sprintf('%02d', rand(0, 99)); }}
转载于:https://www.cnblogs.com/liangle/archive/2011/10/10/2512614.html
PHP GUID和UUID生成类相关推荐
- 怎样用java生成GUID与UUID
GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随机数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...
- 常用的生成UUID工具类
UUID import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java. ...
- java uuid to long_巧借Long类实现自己的UUID生成
在使用数据库的时候,经常需要生成主键,用过数据库的自增长,但ID太有序了,很容易就能让人知道下一条记录的ID.也用过Hibernate的UUID生成,但生成的主键似乎又太长了点,于是想着自己写一个工具 ...
- 利用GUID/UUID生成token及验证token的正确性
本来有JWT这种生成token验证的强大工具,但有时考虑到项目的实际需求,会利用GUID/UUID来生成token,当然GUID/UUID能生成很多具有唯一性的验证结果,所以这里主要记录下GUID/U ...
- UUID/GUID介绍、生成规则及生成代码
UUID/GUID介绍.生成规则及生成代码 1. UUID介绍 1.1 介绍 1.2 UUID优势 1.3 UUID劣势 2. UUID版本 2.1 版本1 - 基于时间的UUID 2.1.1优点 2 ...
- 微软的COM中GUID和UUID、CLSID、IID
摘自:http://blog.csdn.net/zhongguoren666/article/details/6711396 当初微软设计com规范的时候,有两种选择来保证用户的设计的com组件可以全 ...
- 【java】Java运行时动态生成类几种方式
1.概述 转载:Java运行时动态生成类几种方式 这里发现自己不知道的,原来Java 还能自己编译自己,学到了. 最近一个项目中利用规则引擎,提供用户拖拽式的灵活定义规则.这就要求根据数据库数据动态生 ...
- Go语言生成GUID和UUID
1.安装 go get -u github.com/typa01/go-utils import ("github.com/typa01/go-utils" ) 使用,例:fiel ...
- GUID和UUID的区别
GUID和UUID的区别 前言: 因为刚步入企业,对很多专业名词不是很理解,所以作此总结,便于以后回顾学习. UUID: UUID全称:Universally Unique Identifier, ...
- JCIM | 用于自动生成类药分子的生成网络复合体(GNC)
作者/编辑 | 王建民 导读 目前的药物发现工作既昂贵又耗时.如何创造出种类繁多的新型化合物,使其不仅具有理想的药理特性,而且低收入人群也能廉价获得,仍然是一项具有挑战性的任务.这项工作中,研究人员开 ...
最新文章
- 安卓开发8-WebView支持文件上传
- 跳槽必看:产品经理面试试题汇总
- C# 遍历窗体控件顺序问题
- 《操作系统》OS学习(四):计算机体系结构、内存层次和地址生成
- anaconda3对应的python版本_利用SWIG实现Python调用C/C++!速度快就算了,代码量还特少!...
- 你已经是台成熟的vivo手机了,要自己学会打王者
- cin,cerr,clog,cout
- 源码解析由于mysql驱动包升级, “LOAD DATA” 出现The used command is not allowed with this MySQL version错误
- 挂钩SSDT详解附源代码
- LabVIEW参考资料汇总
- WPS中表格中上下线的磅数调整问题-三线表制作
- 无法识别 移动固态硬盘_安上硬盘后不显示 千万别慌可能不是SSD坏了
- 抖音 快手 等短视频自动向下滑动
- [HSI论文阅读] | SSRN:Spectral-Spatial residual network for HSI classification
- 我为什么选择Go语言(Golang)
- Linux进阶_PAM认证机制
- js捕获键盘事件之keydown、keyup以及keypress
- python图片直接保存到远端_Python在远程服务器中的实现挂代码-发送定期天气预报到邮箱+每天一句话(小白教程),远端,定时,至,每日...
- [AHK]为中航证券增加热键并自动填写信息
- MySQL 的物理备份、逻辑备份、增量备份
热门文章
- java.io.NotSerializableException: org.apache.kafka.clients.consumer.ConsumerRecord
- 截至2006年3月1日全球CCIE人数统计
- 企业数字化转型必备利器之微服务扩展
- 开源大数据周刊-第46期
- 数据管理与数据治理的区别
- 11月全球搜索引擎市场:百度份额突破30% 增势持续
- onvif协议规范与版本简介
- 09年最值得期待7大IT收购:思科收购VMware
- YYAsyncLayer 源码剖析:异步绘制
- 解读TIME_WAIT--你在网上看到的大多数帖子可能都是错误的