PHP获取时间戳和微秒数以及生成唯一ID

microtime函数

描述:返回当前Unix时间戳和微秒数

语法:mixed microtime( [ bool $get_as_float ] )

//直接输出
echo microtime();
//得到的是 如:0.26672100 1585622985 前面是当前微秒数,后面是正常时间戳,中间以空格分隔开

//如果带有参数(布尔型参数)
echo microtime(true);
//输出结果:1585623020.7408 刚才的微秒数就会以浮点数的形式表现在原有的时间戳之后

浮点数太长可进行格式化操作

round($float,3)表示保留到小数点后三位

uniqid函数

描述:生成唯一ID

语法:string uniqid( [ string $prefix = " " [, bool $more_entropy = false ]] )  都是可选参数

第一个参数是前缀

echo uniqid("haha");
//结果就是 haha......(后面是随机生成的)

但是我们这个前缀是不变的话没有意义,所以我们可以

uniqid( microtime() );

uniqid( microtime() . mt_rand() );

这个时候我们会发现它会有时间戳和随机数+随机ID,但是长度是不固定的

这时候我们可以使用uuid(产生唯一ID)

uuid 8-4-4-4-12的形式 正好是32位 (MD5是32位的)

echo md5(uniqid(microtime() . mt_rand())),‘<br>‘;

这就产生一个UUID的形态,这样可以保证文件名即使在分布式环境下是唯一的 有些网站也会用网卡的mac地址,这个也是唯一的;

原文地址:https://www.cnblogs.com/leon-chung/p/8975473.html

时间: 2024-12-10 14:03:28

PHP获取时间戳和微秒数以及生成唯一ID的相关文章

php 生成唯一id的几种解决方法

网上查了下,有很多的方法 1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数". 下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872 functi

PHP生成唯一ID的三种方法

1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数". 下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872 com_create_guid()是p

C# 根据twitter的snowflake算法生成唯一ID

C# 版算法: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace Demo 8 { 9 10 /// <summary> 11 /// 根据twitter的snowflake算法生成唯一ID 12 /// snowflake算法 64 位 13 /// 0---000

PHP生成唯一ID的方法

PHP自带生成唯一id的函数:uniqid() 它是基于当前时间微秒数的 用法如下: echo uniqid(); //13位的字符串 echo uniqid("php_"); //当然你可以加上前缀 echo uniqid("php_", TRUE); //如果第二个参数more_entropy为true则生成23位字符串 但是它生成的标识有可能不是唯一的,所以很多人会: //这是第一种简单的方法,当然用sha1()函数也可以. echo md5(uniqid()

python学习之-- 生成唯一ID

以下以2种方法生成唯一ID def uuid_method(): """第一种方法""" import uuid return str(uuid.uuid1()) print(uuid_method()) def time_method(): """第二种方法""" import time, hashlib m = hashlib.md5() m.update(bytes(str(tim

【Python】 uuid生成唯一ID

uuid uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现.有时也称guid(global unique identifier).python中自带了uuid模块来进行uuid的生成和管理工作.(具体从哪个版本开始有的不清楚..) python中的uuid模块基于信息如MAC地址.时间戳.命名空间.随机数.伪随机数来uuid.具体方法有如下几个: uuid.uuid1() 基于MAC地址,时间戳,随机数来生成唯一的u

生成唯一id写法,雪花算法

这个工具直接调用就可以了,用法和写法如下: 代码: 这个是雪花算法的写法: 1 public class SnowFlakeUtil { 2 3 /** 4 * 起始的时间戳 5 */ 6 private final static long START_STMP = 1480166465631L; 7 8 /** 9 * 每一部分占用的位数 10 */ 11 private final static long SEQUENCE_BIT = 12; //序列号占用的位数 12 private fi

生成唯一id

有时候在某些业务中需要先生成一个唯一id,然后再进行存储.可以使用一下的方法: 1.借助mysql或者redis这类能够自增的数据库 这种方式可以满足需求但是需要跟数据库有一次额外的操作.对性能有一定的影响 2.毫秒级的时间加上一个随机数. 这种方式不需要借助数据,性能高些,但是随机数可能会重复,所以结果可能不是全局唯一的 3.毫秒级的时间加上进程id 这种方式可以既满足性能,又是唯一的 对于多核的cpu,每个cpu可以同时执行不同的进程,而每个进程有唯一的id,所以时间可能相同,但是进程的id

在分布式场景,生成唯一ID

在分布式环境下生成数据库主键是一件比较麻烦的事情,这里简单总结下,以供以后使用. 数据库自增长序列或字段 每个服务器使用自增主键,不同服务器的步长不一样,比如 A 服务器生成 1,3,5,7... B 服务器生成 2,4,6,8.... 缺点:难以扩展.合并数据库时非常麻烦.分库分表时难以处理. UUID 常见的方式.可以利用数据库也可以利用程序生成,一般来说全球唯一. 缺点:没有排序,无法保证趋势递增.查询效率比较低.存储量比较大.不可读. Redis 生成 ID 使用 Redis 的原子性生