Php mt#u rand和#x2B的准确性和独特性;time()生成的密钥用作预订参考ID?
我正在考虑使用Php mt#u rand和#x2B的准确性和独特性;time()生成的密钥用作预订参考ID?,php,mysql,random,Php,Mysql,Random,我正在考虑使用$uniqueId=substr(md5(time()*mt_rand()),0,5)生成唯一的预订参考ID。 但是这个生成的ID的复制又如何呢?如果数据库已经具有与此生成的ID相同的ID,该怎么办?如果我使用它,有多少机会生成相同的ID?从人的角度来看,md5不会成为一个好的预订参考-例如,通过电话进行中继会非常尴尬 但从发展的角度来看,您可能不希望使用直接的自动增量,因为它可能会泄露有关业务规模的信息(低数字可能表明客户非常少,并削弱客户信心) 选择包括: 使用日期元素和与用
$uniqueId=substr(md5(time()*mt_rand()),0,5)
生成唯一的预订参考ID。
但是这个生成的ID的复制又如何呢?如果数据库已经具有与此生成的ID相同的ID,该怎么办?如果我使用它,有多少机会生成相同的ID?从人的角度来看,md5不会成为一个好的预订参考-例如,通过电话进行中继会非常尴尬 但从发展的角度来看,您可能不希望使用直接的自动增量,因为它可能会泄露有关业务规模的信息(低数字可能表明客户非常少,并削弱客户信心) 选择包括:
- 使用日期元素和与用户相关的内容生成引用。
例如
2014/09/CUSTOMERSURNAME01
- 使用日期元素和随机变量
在所有选项中,快速呼叫数据库检查唯一性将使您确信您永远不会创建重复。这不会增加太多的检查开销,如果您得到一个重复的,请再试一次。必须重试两次的可能性非常低。我非常确定
md5
字符串的前5个字符在某个时候会重复。我不会相信的。为什么不是1,2,3,4,5。。无法获得比自动递增数字更唯一的数字。或者你只是想让你的生活复杂化?因为只有5个符号,你会有很大的碰撞概率。使用sha256
或其他一些算法来获得更长的哈希值。我需要一份标准的订房证明。。