PHP uniqid 高并发生成不重复唯一ID
2017-01-06 09:10
756 查看
http://www.51-n.com/t-4264-1-1.html
PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳。在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据。即使使用了第二个参数,也会重复,最好的方案是结合md5函数来生成唯一ID。 PHP uniqid() 生成不重复唯一标识方法一 这种方法会产生大量的重复数据,运行如下PHP代码会数组索引是产生的唯一标识,对应的元素值是该唯一标识重复的次数。 <?php $units = array(); for($i=0;$i<1000000;$i++){ $units[] = uniqid(); } $values = array_count_values($units); $duplicates = []; foreach($values as $k=>$v){ if($v>1){ $duplicates[$k]=$v; } } echo '<pre>'; print_r($duplicates); echo '</pre>'; ?> 复制代码 PHP uniqid() 生成不重复唯一标识方法二 这种方法生成的唯一标识重复量明显减少。 <?php $units = array(); for($i=0;$i<1000000;$i++){ $units[] = uniqid('',true); } $values = array_count_values($units); $duplicates = []; foreach($values as $k=>$v){ if($v>1){ $duplicates[$k]=$v; } } echo '<pre>'; print_r($duplicates); echo '</pre>'; ?> 复制代码 PHP uniqid() 生成不重复唯一标识方法三 这种方法生成的唯一标识中没有重复。 <?php $units = array(); for($i=0;$i<1000000;$i++){ $units[]=md5(uniqid(md5(microtime(true)),true)); } $values = array_count_values($units); $duplicates = []; foreach($values as $k=>$v){ if($v>1){ $duplicates[$k]=$v; } } echo '<pre>'; print_r($duplicates); echo '</pre>'; ?> 复制代码 PHP uniqid() 生成不重复唯一标识方法四 使用session_create_id()函数生成唯一标识符,经过实际测试发现,即使循环调用session_create_id()一亿次,都没有出现过重复。 php session_create_id()是php 7.1新增的函数,用来生成session id,低版本无法使用。 |
相关文章推荐
- PHP uniqid()函数可用于生成不重复的唯一标识符,该函数基于微秒级当前时间戳。在高并发或者间隔时长极短(如循环代码)的情况下,会出现大量重复数据。即使使用了第二个参数,也会重复,最好的方案是结
- 高并发 php uniqid 不重复唯一标识符生成方案
- 高并发 php uniqid 不重复唯一标识符生成方案
- 高并发 php uniqid 不重复唯一标识符生成方案
- 高并发 php uniqid 不重复唯一标识符生成方案
- [PHP] 高并发 php uniqid 不重复唯一标识符生成方案
- 高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- Twitter的分布式自增ID算法Snowflake的PHP实现,Snowflake PHP版本,高并发唯一id,全局唯一id,不重复id
- 10031---高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- PHP - Manual手册 - XC. Miscellaneous Functions杂项函数 - uniqid生成唯一ID
- 高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- php uniqid() 通过MYSQL实现全局不重复的唯一ID
- 高并发 php uniqid 用md5生成不重复唯一标识符方案
- 高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- php 生成分布式唯一ID
- (转)如何在高并发分布式系统中生成全局唯一Id
- PHP实现生成唯一编号(36进制的不重复编号)
- 如何在高并发分布式系统中生成全局唯一Id
- 如何在高并发分布式系统中生成全局唯一Id
- 采用PHP函数uniqid生成一个唯一的ID