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 相关文章推荐
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
PHP 反射机制实现动态代理的代码
Oct 22 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
Jun 04 PHP
10个实用的PHP正则表达式汇总
Oct 23 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
Apr 27 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
PHP的mysqli_stat()函数讲解
Jan 23 PHP
Jsonp劫持学习
Apr 01 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
虫族 Zerg 热键控制
2020/03/14 星际争霸
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery stop()用法实例详解
2016/07/28 Javascript
javascript如何创建对象
2016/08/29 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
Javascript的this用法
2017/01/16 Javascript
Easyui和zTree两种方式分别实现树形下拉框
2017/08/04 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
[00:09]DOTA2新版本PA至宝特效动作展示
2014/11/19 DOTA
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python使用PIL缩放网络图片并保存的方法
2015/04/24 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
Python对列表中的各项进行关联详解
2017/08/15 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
2019/08/28 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
浙大网新C/C++面试解惑
2015/05/27 面试题
环保专业大学生职业规划设计
2014/01/10 职场文书
小区门卫值班制度
2014/01/24 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
推销搭讪开场白
2015/05/28 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python