我正在开发一个私人消息系统,我想分配一个唯一的对话号码,以便我可以识别是否有多个用户参与了同一个对话。我正在考虑像这样分配发送消息的人的用户 ID + microtime()
:
$conversation_number = md5($_POST['user_id']+microtime());
此代码是否始终源自唯一编号,或者也可能意外地为后续消息生成相同的编号?
您可以使用uniqid,它用于生成唯一 ID。
为什么不使用UniqId()函数?
我认为phpuniqid
就足够了
来自 PHP 文档
如果设置为 TRUE,uniqid() 将在返回值的末尾添加额外的熵(使用组合的线性同余生成器),这增加了结果唯一的可能性
尝试
uniqid('id', true)
但是,在 32 位十六进制值 (16^32) 中大约有 3.402823669209387e+38 个不同的值,md5
您的几率非常小,以至于会有相同的重复