Php 会话Id';s、 UUID';s和GUID';s和just ID';一般来说

Php 会话Id';s、 UUID';s和GUID';s和just ID';一般来说,php,session-state,uniqueidentifier,sessionid,Php,Session State,Uniqueidentifier,Sessionid,我有个主意。这可能是不好的,原因我不知道,但我真的很感谢你的反馈 我们在一个PHP项目中使用了会话ID。4年来第一次生成了一个重复的sessionid。幸运的是,我随机决定浏览Customers表,因为我很无聊,注意到sessionid列中有一个重复的条目,并在出现任何实际问题之前对其进行了更改和引用 是什么导致我问自己这个问题: 基本上,任何类型的ID,无论是会话ID、uuid还是guid,最终都可以复制,因为它们的长度不是无限的。然后我开始思考,因为我们不希望这种事情再次发生 我想,如果我们

我有个主意。这可能是不好的,原因我不知道,但我真的很感谢你的反馈

我们在一个PHP项目中使用了会话ID。4年来第一次生成了一个重复的sessionid。幸运的是,我随机决定浏览Customers表,因为我很无聊,注意到sessionid列中有一个重复的条目,并在出现任何实际问题之前对其进行了更改和引用

是什么导致我问自己这个问题:

基本上,任何类型的ID,无论是会话ID、uuid还是guid,最终都可以复制,因为它们的长度不是无限的。然后我开始思考,因为我们不希望这种事情再次发生

我想,如果我们使用日期和时间的组合作为标识符呢?这不会是“随机的”,但可以解决重复问题。例如:

14th of May 2011 04:36:05PM 
如果用作标识符,则可以更改为:

14052011163605
这种形式的ID永远不会被复制的原因是,未来的日期和时间都不会与过去或现在的相同

既然,在我们的例子中,这些ID是不应该被任何人看到的,就没有理由让它是随机的,是吗


我很想听听你对这件事的看法,以及你是如何处理这种情况的。生成[实际上]唯一ID的最佳方法是什么?

UUID/GUID非常大(大于可见宇宙中的粒子数)


您的日期/时间解决方案将在高负载时失败。当我每秒需要100多个新ID时会发生什么情况?

UUID/guid非常大(大于可见宇宙中的粒子数)

您的日期/时间解决方案将在高负载时失败。当我每秒需要100多个新ID时会发生什么

这种形式的ID永远不会被复制的原因是,未来的日期和时间都不会与过去或现在的相同

如果你只有一个用户,这是真的

这种形式的ID永远不会被复制的原因是,未来的日期和时间都不会与过去或现在的相同


如果您只有一个用户,这将是正确的。

为什么不将会话ID列设为唯一列,然后在出现约束冲突错误时生成新的会话ID?这样,数据库将以与您基本相同的方式为您发现此问题(作为奖励,它也可以解决此问题)。

为什么不将会话ID列设为唯一列,然后在出现约束冲突错误时生成新的会话ID?这样,数据库将以与您基本相同的方式为您发现此问题(作为奖励,它也可以解决此问题)。

UUID已经基于纳秒时间间隔生成(请参见此)。如果您使用的是PHP,我建议您在本页中查看如何根据您的使用情况生成不同的版本:

无法保证唯一性的原因是,最终必须为包含UUID的实际字符串/变量选择一个大小限制,因此始终存在重复的可能性。但是,考虑到UUID的可能性,这实际上是不可能的


我同意其他的海报。。。这可能永远不会发生。您实际上是如何生成唯一ID的?您确定您的代码正确地创建了它们吗?

UUID已经基于纳秒的时间间隔生成(请参见此)。如果您使用的是PHP,我建议您在本页中查看如何根据您的使用情况生成不同的版本:

无法保证唯一性的原因是,最终必须为包含UUID的实际字符串/变量选择一个大小限制,因此始终存在重复的可能性。但是,考虑到UUID的可能性,这实际上是不可能的


我同意其他的海报。。。这可能永远不会发生。您实际上是如何生成唯一ID的?您确定您的代码正确地创建了会话ID吗?

在处理会话ID时,您需要将重点放在技术上。为您添加了PHP标记。您是否1000%确定创建了重复的会话ID?我认为有一些额外的检查来防止这种情况的发生,而不仅仅是一个随机发生器。你确定不是同一个用户从两个帐户登录或注销吗?肯定是重复的。我正在处理所有在项目中处理SeSession ID的代码,以防万一这是我们的问题,但是如果是这样的话,它会发生不止一次,我想。6个月前创建了一个帐户,并关联了一个sessionid。昨晚,创建了一个新帐户,两个sessionid完全相同。如果我没有点击Navicat for MySQL中的列标题,我永远不会发现它。为什么你的会话会持续6个月?@ceejayoz-我们不喜欢删除关于用户在网站或软件上的行为的信息,甚至与用户的行为有轻微关联。事实上,每一点信息,不管它有多少,都会对我们有所帮助。在处理会话ID时,您需要将重点放在技术上。为您添加了PHP标记。您是否1000%确定创建了重复的会话ID?我认为有一些额外的检查来防止这种情况的发生,而不仅仅是一个随机发生器。你确定不是同一个用户从两个帐户登录或注销吗?肯定是重复的。我正在处理所有在项目中处理SeSession ID的代码,以防万一这是我们的问题,但是如果是这样的话,它会发生不止一次,我想。6个月前创建了一个帐户,并关联了一个sessionid。昨晚,