PHP 生成全局唯一id
2017-05-17 14:19
761 查看
直接上代码:
注意,这里并不能百分百保证 id 的唯一性,不过测试发现得到唯一id的概率非常高,测试代码如下,大家使用前可以自行测试:
function generate_global_uniqid() { $prefix = md5(microtime(true)); // 生成唯一ID发生器 prefix,如果为服务集群需要生成唯一ID,该值可以设置为机器编号,这里采用了时间作为前缀 $id = uniqid($prefix, true); // 生成唯一ID, 具体可以参考:http://php.net/manual/en/function.uniqid.php,参数 true 可以提高唯一的概率(注意这里并不能完全保证生成id的唯一性,但是测试结果显示,重复的概率非常低) return md5($id); }
注意,这里并不能百分百保证 id 的唯一性,不过测试发现得到唯一id的概率非常高,测试代码如下,大家使用前可以自行测试:
<?php $units = array(); for ($i = 0; $i < 1000000; $i++) // 100万次循环 { $units[] = md5(uniqid(md5(microtime(true)), true)); } $values = array_count_values($units);$duplicates = []; // 重复的id foreach ($values as $k => $v) { if ($v > 1) { $duplicates[$k] = $v; } } var_dump($duplicates);
相关文章推荐
- PHP - Manual手册 - XC. Miscellaneous Functions杂项函数 - uniqid生成唯一ID
- 如何在高并发分布式系统中生成全局唯一Id
- php 生成唯一ID
- PHP----生成唯一的ID
- 关于全局唯一ID生成方法
- php 生成唯一id的几种解决方法
- (转)如何在高并发分布式系统中生成全局唯一Id
- 如何在高并发分布式系统中生成全局唯一Id
- 介绍SQL2005 引入的按顺序生成的全局唯一标识符NEWSEQUENTIALID()
- 高并发 sql 生成不重复编号 (订单号) & 如何在高并发分布式系统中生成全局唯一Id
- php订单生成唯一Id
- PHP生成唯一ID
- 如何在高并发分布式系统中生成全局唯一Id
- 如何在高并发分布式系统中生成全局唯一Id
- PHP生成唯一标识ID
- 全局唯一ID的生成方式
- 全局唯一ID的生成方式
- 如何在高并发分布式系统中生成全局唯一Id
- php 生成分布式唯一ID