php生成局部唯一识别码LUID的代码
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生成唯一数字id的方法汇总
关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢? 当然不是,其实有两种方法可以解决. 1. 如果你只用php而不用数据库的话,那时间戳+随机数是最好的方法,且不重复: 2. 如果需要使用数据库,即你还需要给这个id关联一些其他的数据.那就给MySQL数据库中的表的id一个AUTO_INCREMENT(自增)属性,每次插入一条数据时,id自动+1,然后使用mysql_insert_id()或LAST_INS
-
php ajax无刷新分页,支持id定位
<?php Header("Content-Type:text/html; charset=utf-8"); function AjaxPage($Total,$ListNub,$CurrentPage,$Url,$AjaxAction,$HalfPer='',$ViewId='') { //计算总页数 $totalPage = @ceil($Total/$ListNub); $total=$totalPage-1; $re=""; //echo $Curre
-
PHP下通过系统信号量加锁方式获取递增序列ID
在网上搜了搜,有两个办法但都不太好:一个是简单的以进程ID+时间戳,或进程ID+随机数来产生近似的唯一ID,虽简单但对于追求"完美"的我不愿这样凑合,再说Apache2以后进程会维持相当长得时间,生成的ID发生碰撞的几率还是比较大的:第二个思路是通过Mysql的自增字段,这个就更不能考虑了,效率低不说,我的设计里压根就没数据库. 递增ID的获取是个过程: 1. 从全局某个存储中读取ID 2. 给ID加1 3. 将ID重新存入全局存储 在多进程或线程的程序中需要将上述3步作为单步的原子操
-
PHP通过session id 实现session共享和登录验证的代码
先说说,这个机制的用途吧,到现在为止战地知道这个机制有两个方面的用途: 首先,多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器.用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就要通过一个session的唯一标识来共享这个session了--具体session的共享超出了本文的范围,请自行查阅资料. 第二个用途就是,验证同
-
3种php生成唯一id的方法
小编在网上查了许多关于php生成唯一id方法的文章,发现有很多的方法,特整理本文与大家分享php生成唯一id的解决方法,希望大家喜欢. 1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数".
-
PHP实现把数字ID转字母ID
ID是网站中经常出现的,它一般是数字,但是我们发现现在的网站很多ID都是字母了,比如YouTube的视频播放页它的URL类似/watch?v=yzNjIBEdyww. 下面是一个生成字母ID的方法.使用示例: 复制代码 代码如下: alphaID(12354): //会将数字转换为字母. alphaID('PpQXn7COf',true)://会将字母ID转换为对应的数字. alphaID(12354,false,6)://指定生成字母ID的长度为6. 源码: 复制代码 代码如下: <
-
使用PHP uniqid函数生成唯一ID
生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID.由于生成唯一ID与微秒时间关联,因此ID的唯一性非常可靠. 生成的唯一ID默认返回的字符串有 13 个字符串长,如果不定义唯一ID的前缀,最多可返回23个字符串长,如果再结合md5()函数,生成的唯一ID可靠性将更高,这种生成的ID比随机性的ID 最大优点在于可实现排序,特别是一些需要存储在数据库中的值. 一,函数原型 string uniqid ( [s
-
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
1.测试方法www.xxx.com/test.php?content_id=自己定义,如:44 复制代码 代码如下: $content_id = array();//1.创建一个数组 $content_id[] = $_GET['contentid']; //2.对接受到的ID插入到数组中去 if(isset($_COOKIE['content_id'])) //3.判定cookie是否存在,第一次不存在(如果存在的话) { $now_content = str_replace("\\"
-
php获取淘宝分类id示例
复制代码 代码如下: $url = "http://list.taobao.com/browse/cat-0.htm"; $html = file_get_contents($url); echo '<meta charset="UTF-8">'; $pattern='/\<a\s+href\=\"http\:\/\/list\.taobao\.com\/itemlist\/.*?\&cat\=([0-9]+)\"
-
php生成局部唯一识别码LUID的代码
UUID(Universally Unique Identifier),GUID都是希望在整个时空范围内能产生唯一识别码,这在分布式计算环境下是必要的. 然而,如果仅仅是想在一个受限定的局部环境下,想生成一个"局部唯一识别码",使用UUID就是杀鸡用牛刀,这个"局部唯一识别码",我称之为LUID(Local Unique Identifier) 比如我在用php开发网站程序时,为避免用户同时多次打开同一个网页导致session名称冲突问题, 就希望保存的sessio
-
基于Java代码实现游戏服务器生成全局唯一ID的方法汇总
在服务器系统开发时,为了适应数据大并发的请求,我们往往需要对数据进行异步存储,特别是在做分布式系统时,这个时候就不能等待插入数据库返回了取自动id了,而是需要在插入数据库之前生成一个全局的唯一id,使用全局的唯一id,在游戏服务器中,全局唯一的id可以用于将来合服方便,不会出现键冲突.也可以将来在业务增长的情况下,实现分库分表,比如某一个用户的物品要放在同一个分片内,而这个分片段可能是根据用户id的范围值来确定的,比如用户id大于1000小于100000的用户在一个分片内.目前常用的有以下几种:
-
获取Android系统唯一识别码的方法
本文实例讲述了获取Android系统唯一识别码的方法.分享给大家供大家参考.具体如下: 在计算机上,我们习惯用MAC地址来标志一台计算机.在Android设备上,可以用IMIE或者Android ID来标志一个设备. 看一下Android上怎样获取这样的信息. 一个是TelephonyManager的getDeviceId,另外一个是Settings.System的ANDROID_ID 这里贴一段测试代码: package com.npc4.android.imie; import androi
-
GoLang中生成UUID唯一标识的实现
1.什么是UUID UUID简介 通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份. UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定. 如此一来,每个人都可以创建不与其它人冲突的UUID. 在这样的情况下,就不需考虑数据库创建时的名称重复问题.目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要
-
c# 获取机器唯一识别码的示例
目录 前言 原理 建议 实现 补充 补充2 前言 在客户端认证的过程中,我们总要获取客户机的唯一识别信息,曾经以为MAC地址是不会变的,但是现在各种改,特别是使用无线上网卡,MAC地址插一次变一次,所以这样使用MAC就没有什么意义了,怎么办,又开始求助Google,最后找到一个折中的方案 原理 通过获取主板.处理器.BIOS.mac.显卡.硬盘等的ID生成唯一识别码 建议 1.使用那些不经常更换的模块来生成识别码. 2.如果经常更换MAC,显卡,硬盘,则不要使用这些ID. 3.确保使用stati
-
浅谈JAVA如何生成UUID唯一标识
1.UUID 简介 UUID 含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准. 也是被开源软件基金会 (Open Software Foundation, OSF)的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分. UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定. 如此一来,每个人都可以建立不与其它人
-
PHP实现Snowflake生成分布式唯一ID的方法示例
前言 Twitter 的 snowflake 在分布式生成唯一 UUID 应用还是蛮广泛的,基于 snowflake 的一些变种的算法网上也有不少.使用 snowflake 生成 UUID 很多都是在分布式场景下使用,我看了下网上有其中有几篇 PHP 实现的都没有考虑到线程安全.现在 PHP 有了 Swoole 的锁和协程的加持,对于我们开发线程安全和高并发模拟还是很方便的,这里用 PHP 结合 Swoole 来学习下实现最简单的 snowflake. 先来看以下 snowflake 的结构:
-
springboot集成redis并使用redis生成全局唯一索引ID
部署redis Windows下搭建Reids本地集群,可参考https://www.jb51.net/article/242520.htm springboot集成 redis pom文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency&
-
js生成随机数(指定范围)的实例代码
1.随机生成4位数的随机数 <script language="javascript"> /** * 随机生成4位的随机数 * http://www.yulu.jb51.net */ document.write(parseInt(10*Math.random())); //输出0-10之间的随机整数 document.write(Math.floor(Math.random()*10+1)); //输出1-10之间的随机整数 function RndNum(n){ var
-
php文章内容分页并生成相应的htm静态页面代码
复制代码 代码如下: <?php $url='test.php?1=1'; $contents="fjka;fjsa;#page#批量生成分成文件并且加上分页代码"; $ptext ='#page#'; ContentsPages($url,$contents,$ptext) /** * 函数名:ContentsPages * 功能:文章内容分页 * 参数:$url文章内容页URL 类型string,$contents文章内容页内容 类型string,$ptext分页标识 类型s
随机推荐
- 什么是json和jsonp,jQuery json实例详详细说明
- Golang字符串变位词示例详解
- Go语言使用组合的方式实现多继承的方法
- Python实现TCP协议下的端口映射功能的脚本程序示例
- jQuery()方法的第二个参数详解
- node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
- 用批处理/注销脚本清除 存储用户名和密码 列表的代码
- java 线程创建多线程详解
- js中toString()和String()区别详解
- asp.net开发中常见公共捕获异常方式总结(附源码)
- ASP.NET 定制简单的错误处理页面实现代码
- ASP.NET(C#)验证数字的两种方法
- php foreach正序倒序输出示例代码
- js实现类似MSN提示的页面效果代码分享
- 浅谈python和C语言混编的几种方式(推荐)
- EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表
- MYSQL删除匿名用户的方法(提高安全性)
- Javascript与jQuery方法的隐藏与显示
- JVM 心得 OOM时的堆信息获取方法与分析
- 详解C# 托管资源和非托管资源