mt_rand + time()生成密钥的准确性和唯一性如何用作预订参考ID?

时间:2014-09-18 08:16:09

标签: php mysql random

我正在考虑使用$uniqueId = substr(md5(time() * mt_rand()),0,5);为预订参考生成唯一ID。 但是这个生成的ID重复怎么样?如果数据库已经具有由此生成的相同ID,该怎么办?如果我使用它,会有多少百分比的机会生成相同的ID?

1 个答案:

答案 0 :(得分:2)

从人的角度来看,md5不会提供良好的预订参考 - 例如,通过电话进行转发是非常尴尬的。

但从开发的角度来看,您可能不希望使用直接的自动增量,因为它可能会泄露有关业务规模的信息(数量较少可能表明客户很少并侵蚀客户信心)。

选项包括:

  • 使用日期元素和与用户相关的内容生成引用。 例如2014/09/CUSTOMERSURNAME01

  • 使用日期元素和随机

在所有选项中,快速调用数据库以检查唯一性将使您确信永远不会创建重复项。它不会增加太多的开销来检查,如果你再次尝试重复。不得不再次尝试两次的可能性非常低。