可以将PHP的random_int用作唯一的整数生成器吗(合理)

时间:2018-10-20 17:25:51

标签: php random integer uniqueidentifier

我有一个应用程序,每年将需要生成大约20万个批次ID。

我首先想到了使用uniqid()来生成批次ID,但是它将返回为字符串,与整数相比,它将占用数据库中的巨大空间。

因此,我的问题是,将依靠random_int(1, 2147483647)来生成唯一数字吗?

仅供参考,通常2147483647PHP_INT_MAX

1 个答案:

答案 0 :(得分:1)

如@Alex Howansky所述,如果使用uniquid(),数据库大小几乎不会增加。

如果您的要求是接近100%的唯一ID,那么random 4位整数将不是唯一的。它将需要一些额外的位才能随机且唯一。

我在应用程序中使用以下功能。这具有较高的独特性。它使用22个字节,而不是uniquid()

的13个字节
function getUniqueId(){
  // will return 22 characters Unique string eg "5bcc2342652c2630171474"
  return str_replace('.', '', uniqid('',true));
}

如果您仍然只需要使用整数。然后,如Lawrence Cherone所建议,应使用自动增量。