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函数代码
Apr 22 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
PHP异步调用socket实现代码
Jan 12 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
PHP中feof()函数实例测试
Aug 23 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
PHP中使用curl伪造IP的简单方法
Aug 07 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 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生成CSV文件简单示例
2016/12/21 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
2019/10/14 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
JavaScript中的setUTCDate()方法使用详解
2015/06/11 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
Bootstrap源码解读按钮(5)
2016/12/23 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
Node.js之readline模块的使用详解
2019/03/25 Javascript
node后端服务保活的实现
2019/11/10 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
python实现汉诺塔算法
2021/03/01 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
Tensorflow实现部分参数梯度更新操作
2020/01/23 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
UDP协议功能
2013/01/06 面试题
学生个人的自我评价分享
2013/11/05 职场文书
质检的岗位职责
2013/11/17 职场文书
先进工作者获奖感言
2014/02/08 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
2014年服务员工作总结
2014/11/18 职场文书
2016年学校党支部创先争优活动总结
2016/04/05 职场文书