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
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
PHP无刷新上传文件实现代码
Sep 19 PHP
PHP服务器页面间跳转实现方法
Aug 02 PHP
用php来改写404错误页让你的页面更友好
Jan 24 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
May 28 PHP
php数组查找函数总结
Nov 18 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
php限制文件下载速度的代码
Oct 20 PHP
PHP单例模式与工厂模式详解
Aug 29 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
一次因composer错误使用引发的问题与解决
Mar 06 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
人族 TERRAN 概述
2020/03/14 星际争霸
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
PHP实现定时生成HTML网站首页实例代码
2008/11/20 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
2020/03/02 PHP
JS 对象介绍
2010/01/20 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
通俗解释JavaScript正则表达式快速记忆
2017/08/23 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
Python设计模式之单例模式实例
2014/04/26 Python
从零学Python之入门(四)运算
2014/05/27 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
一个基于flask的web应用诞生(1)
2017/04/11 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python遍历numpy数组的实例
2018/04/04 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
Python yield的用法实例分析
2020/03/06 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
大学生职业生涯规划书范文
2014/01/14 职场文书
新学期教师寄语
2014/04/02 职场文书
关于读书的演讲稿
2014/05/07 职场文书
加薪申请报告范本
2015/05/15 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
新郎父母婚礼致辞
2015/07/27 职场文书
获奖感言范文
2015/07/31 职场文书
2016年国陪研修感言
2015/11/18 职场文书