Php time()是否会返回相同的输出?

Php time()是否会返回相同的输出?,php,performance,random,time,Php,Performance,Random,Time,我在PHP中为用户注册时生成令牌。我想知道两个用户是否可以获得相同的令牌。。。因为这会破坏系统。请让我知道这是否足够 $token = md5(rand().time()); 编辑:我现在使用在另一个问题上找到的generate_uuid()函数。 这样行吗 function generate_uuid() { return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand( 0, 0xffff ), mt

我在PHP中为用户注册时生成令牌。我想知道两个用户是否可以获得相同的令牌。。。因为这会破坏系统。请让我知道这是否足够

$token = md5(rand().time());
编辑:我现在使用在另一个问题上找到的generate_uuid()函数。 这样行吗

function generate_uuid() {
    return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
        mt_rand( 0, 0xffff ),
        mt_rand( 0, 0x0C2f ) | 0x4000,
        mt_rand( 0, 0x3fff ) | 0x8000,
        mt_rand( 0, 0x2Aff ), mt_rand( 0, 0xffD3 ), mt_rand( 0, 0xff4B )
    );

}
很有可能永远不会重蹈覆辙

  • Time()在一秒钟内重复
  • 如果使用夏令时,时间()每年重复一小时
  • 但是rand()不会重复2^30个步骤
  • MD5不会增加随机性,甚至可能会降低随机性
mt_rand()
非常擅长“随机性”,但这意味着它可以并且将在“随机”时间重复。不要相信它不会重复

另请参见
microtime(true)
;它精确到微秒。但它仍然可能导致DUP,特别是当两个不同的客户端使用相同的公式时

只需使用UUID函数。他们投入了大量的研究和思考。你在不必要地重新发明轮子。请参阅,了解UUID为什么会影响数据库的性能以及如何处理

很有可能永远不会重蹈覆辙

  • Time()在一秒钟内重复
  • 如果使用夏令时,时间()每年重复一小时
  • 但是rand()不会重复2^30个步骤
  • MD5不会增加随机性,甚至可能会降低随机性
mt_rand()
非常擅长“随机性”,但这意味着它可以并且将在“随机”时间重复。不要相信它不会重复

另请参见
microtime(true)
;它精确到微秒。但它仍然可能导致DUP,特别是当两个不同的客户端使用相同的公式时


只需使用UUID函数。他们投入了大量的研究和思考。你在不必要地重新发明轮子。请参阅,了解UUID为什么会影响数据库的性能以及如何处理。

当然会<代码>md5冲突是微不足道的,这就是为什么它是维基百科关于md5哈希的文章的一部分。祝你好运但作为一条建议:使用uid/uuid库。这就是它们的用途=)为什么不使用?看这是否回答了你的问题?我编辑了这篇文章。你们能不能检查一下,确定它是否每次都是独一无二的?当然会<代码>md5冲突是微不足道的,这就是为什么它是维基百科关于md5哈希的文章的一部分。祝你好运但作为一条建议:使用uid/uuid库。这就是它们的用途=)为什么不使用?看这是否回答了你的问题?我编辑了这篇文章。你们能检查一下并确定这是否每次都是独一无二的吗??
$token = md5(rand().time());