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 相关文章推荐
如何跨站抓取别的站点的页面的补充
Oct 09 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
PHP投票系统防刷票判断流程分析
Feb 04 PHP
3款值得推荐的微信开发开源框架
Oct 28 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
非常经典的PHP文件上传类分享
May 15 PHP
PHP中Laravel 关联查询返回错误id的解决方法
Apr 01 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
PHP simplexml_load_string()函数实例讲解
Feb 03 PHP
Yii框架引入coreseek分页功能示例
Feb 08 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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/10/09 PHP
php实现的日历程序
2015/06/18 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
一个简单的js树形菜单
2011/12/09 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
js 左右悬浮对联广告特效代码
2014/12/12 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
vue 父组件中调用子组件函数的方法
2019/06/06 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
python 识别图片中的文字信息方法
2018/05/10 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
美国气象仪器、花园装饰和墙壁艺术商店:Wind & Weather
2019/05/29 全球购物
在校生汽车维修实习自我鉴定
2013/09/19 职场文书
求职信范文英文版
2014/01/05 职场文书
yy结婚证婚词
2014/01/10 职场文书
实践单位评语
2014/04/26 职场文书
个性车贴标语
2014/06/24 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
四风自我剖析材料
2014/09/30 职场文书
村官个人总结范文
2015/03/03 职场文书
MySQL query_cache_type 参数与使用详解
2021/07/01 MySQL