PHP之uniqid()函数用法


Posted in PHP onNovember 03, 2014

本文实例讲述了PHP中uniqid()函数的用法。分享给大家供大家参考。具体方法分析如下:

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
注释:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。

<?php

echo uniqid();

?>

本例产生 32 个字符的独一无二字符串。
<?php

$token = md5(uniqid(rand()));

echo $token;

?>

 
uniqid() 返回一个带前缀的唯一标识基于当前时间精确到微秒.
只是说基于当前时间,但是没有说明与当前时间的关系如何。
echo uniqid();可以看到uniqid始终是一个不断变化的长度为13的十六进制数。

来看看下面这段代码:

<?php

echo hexdec(uniqid())/(time()+microtime()); 

?>

输出基本上在1048576左右。

可以断定,uniqid就是当前时间精确到微秒再乘以1048576(2的20次幂)最后转换为十六进制得到的。
知道uniqid与time的关系后uniqid就可以有更广泛的用途了,比如在论坛中可以用uniqid作为帖子的文件名。

做在帖子索引中,可以很方便的按时间查找帖子。

结合上下代码看,我想他的作用是生成一个不重复的32位字符吧

uniqid() 函数本身就是基于以微秒计的当前时间,所以在高并发的情况下肯定会出现重复的情况,解决的的方法是你可以在这个前提下再生成一个随机数,然后两者结合后产生出一个新的数,这样就会降低重复的概率。如果还是想要再精确的话还可以加上客户端的IP的Md5码来一同生成,这样应该重复的概率就极低了,可以说是几乎不会重复。

<?php

function getRand(){

    return uniqid() . rand(1, 100000);

}

echo getRand();

exit;

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
用PHP读取RSS feed的代码
Aug 01 PHP
laravel安装和配置教程
Oct 29 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
检测codeigniter脚本消耗内存情况的方法
Mar 21 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
深入学习微信网址链接解封的防封原理visit_type
Aug 15 PHP
基于thinkphp6.0的success、error实现方法
Nov 05 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
Jan 23 PHP
PHP实现Soap通讯的方法
Nov 03 #PHP
ThinkPHP实现二级循环读取的方法
Nov 03 #PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
Nov 03 #PHP
ThinkPHP有变量的where条件分页实例
Nov 03 #PHP
PHP的拦截器实例分析
Nov 03 #PHP
php类中的各种拦截器用法分析
Nov 03 #PHP
PHP类的反射用法实例
Nov 03 #PHP
You might like
php Smarty初体验二 获取配置信息
2011/08/08 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
CodeIgniter使用phpcms模板引擎
2013/11/12 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
JavaScript中的类(Class)详细介绍
2014/12/30 Javascript
jquery验证手机号是否正确实例讲解
2015/11/17 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
js实现日历的简单算法
2017/01/24 Javascript
解决浏览器会自动填充密码的问题
2017/04/28 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
2018/08/31 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
python 字符串split的用法分享
2013/03/23 Python
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
Python 元组(Tuple)操作详解
2014/03/11 Python
Python检测网络延迟的代码
2018/05/15 Python
HTML的form表单和django的form表单
2019/07/25 Python
python随机生成库faker库api实例详解
2019/11/28 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
工程测量与监理专业应届生求职信
2013/11/27 职场文书
实习生自荐信范文分享
2013/11/27 职场文书
实习生岗位职责
2014/04/12 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
入党群众意见范文
2015/06/02 职场文书
升学宴学生致辞
2015/07/27 职场文书
浅谈Python魔法方法
2021/06/28 Java/Android
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis