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下实现农历日历的代码
Mar 07 PHP
php全排列递归算法代码
Oct 09 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
php数组删除元素示例
Mar 21 PHP
php实现的九九乘法口诀表简洁版
Jul 28 PHP
php函数serialize()与unserialize()用法实例
Nov 06 PHP
PHP递归复制、移动目录的自定义函数分享
Nov 18 PHP
PHP获取毫秒级时间戳的方法
Apr 15 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 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获取当前url的具体方法全面解析
2013/11/26 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
PHP的PDO预定义常量讲解
2019/01/24 PHP
JS学习之一个简易的日历控件
2010/03/24 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python使用Matplotlib模块时坐标轴标题中文及各种特殊符号显示方法
2018/05/04 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Django中的cookie和session
2019/08/27 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
如何通过python实现人脸识别验证
2020/01/17 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
单位人事专员介绍信
2014/01/11 职场文书
销售业务员岗位职责
2014/01/29 职场文书
初级会计求职信范文
2014/02/15 职场文书
公司董事长岗位职责
2014/06/08 职场文书
解除施工合同协议书
2014/10/17 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
运动会表扬稿
2015/01/16 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript