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 相关文章推荐
PHP的中问验证码
Nov 25 PHP
一步一步学习PHP(3) php 函数
Feb 15 PHP
更改localhost为其他名字的方法
Feb 10 PHP
php cli换行示例
Apr 22 PHP
php中addslashes函数与sql防注入
Nov 17 PHP
thinkphp常见路径用法分析
Dec 02 PHP
php从csv文件读取数据并输出到网页的方法
Mar 14 PHP
浅谈php和js中json的编码和解码
Oct 24 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
PHP设计模式之简单工厂和工厂模式实例分析
Mar 25 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP 页面跳转到另一个页面的多种方法方法总结
2009/07/07 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
js 加载时自动调整图片大小
2008/05/28 Javascript
js 绑定带参数的事件以及手动触发事件
2010/04/27 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
整理关于Bootstrap警示框的慕课笔记
2017/03/29 Javascript
jQuery输入框密码的显示隐藏【代码分享】
2017/04/29 jQuery
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python数字类型math库原理解析
2020/03/02 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
家庭贫困证明书(3篇)
2014/09/15 职场文书
学术会议通知
2015/04/15 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript