php生成局部唯一识别码LUID的代码


Posted in PHP onOctober 06, 2012

UUID(Universally Unique Identifier),GUID都是希望在整个时空范围内能产生唯一识别码,这在分布式计算环境下是必要的. 然而,如果仅仅是想在一个受限定的局部环境下,想生成一个"局部唯一识别码",使用UUID就是杀鸡用牛刀,这个"局部唯一识别码",我称之为LUID(Local Unique Identifier)

比如我在用php开发网站程序时,为避免用户同时多次打开同一个网页导致session名称冲突问题, 就希望保存的session不是$_SESSION['param'],而是$_SESSION[$luid]['param'],再通过其他方式传递$luid值,保证'param'参数不被覆盖. 查找了一下别人的解决方式,都是生成UUID,而生成UUID的算法洋洋洒洒上百行. 我考虑到因为是在SESSION空间里,是一个受限定的环境,其唯一性的强度不必太高,只要在同一个SESSION的生存期限内唯一就可以了,于是便有了下面的代码:

/** 
* 返回一个唯一在本地系统中独一无二的字符串, 
* 返回的是32个字符的字符串,形式如'7dac352074f221f3edc74d265c65a636',或'd198d8fc56ffed627f3f8313d6f06acf' 
*/ 
function LUID(){ 
return MD5(microtime()); 
}

其实就一行.return MD5(microtime());

按道理microtime()返回的字符串就已经是唯一的了,我测了一下,即使连续执行microtime(),返回值也有100us以上的差别,而使用者点击,并在网络上传递再由服务器处理的间隔远不止几十ms. 加上md5只是让结果杂乱化.

PHP 相关文章推荐
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
PHP实现抓取HTTPS内容
Dec 01 PHP
php去除头尾空格的2种方法
Mar 16 PHP
php-redis中的sort排序函数总结
Jul 08 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
什么是OneThink oneThink后台添加插件步骤
Apr 13 PHP
php基于CodeIgniter实现图片上传、剪切功能
May 14 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
php中static和const关键字用法分析
Dec 07 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
Oct 06 #PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 #PHP
PHP中的生成XML文件的4种方法分享
Oct 06 #PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 #PHP
PHP正则表达式之定界符和原子介绍
Oct 05 #PHP
PHP超级全局变量数组小结
Oct 04 #PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
Oct 04 #PHP
You might like
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php快速url重写更新版[需php 5.30以上]
2010/04/25 PHP
PHP array_multisort()函数的使用札记
2011/07/03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
2014/06/23 PHP
浅析php原型模式
2014/11/25 PHP
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
简单了解python的内存管理机制
2019/07/08 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
python logging设置level失败的解决方法
2020/02/19 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
美国女性运动零售品牌:Lady Foot Locker
2017/05/12 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
自荐信范文
2013/12/10 职场文书
技术副厂长岗位职责
2013/12/26 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
签约仪式策划方案
2014/06/02 职场文书
金融专业求职信
2014/08/05 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
帝企鹅日记观后感
2015/06/10 职场文书