我有一个应用程序,每年将需要生成大约20万个批次ID。
我首先想到了使用uniqid()
来生成批次ID,但是它将返回为字符串,与整数相比,它将占用数据库中的巨大空间。
因此,我的问题是,将依靠random_int(1, 2147483647)
来生成唯一数字吗?
仅供参考,通常2147483647
是PHP_INT_MAX
。
答案 0 :(得分:1)
如@Alex Howansky所述,如果使用uniquid()
,数据库大小几乎不会增加。
如果您的要求是接近100%的唯一ID,那么random
4位整数将不是唯一的。它将需要一些额外的位才能随机且唯一。
我在应用程序中使用以下功能。这具有较高的独特性。它使用22个字节,而不是uniquid()
function getUniqueId(){
// will return 22 characters Unique string eg "5bcc2342652c2630171474"
return str_replace('.', '', uniqid('',true));
}
如果您仍然只需要使用整数。然后,如Lawrence Cherone所建议,应使用自动增量。