【问题标题】:PHP: Can I guarantee that date('s') will always return an unique value?PHP:我能保证 date('s') 总是返回一个唯一值吗?
【发布时间】:2012-04-28 22:07:32
【问题描述】:

如果这个问题有问题,请原谅我。可能这是一个非常愚蠢的问题,但需要确切地知道。

$t = date('s'); // s for second
echo mkTime($t); // 1335629750

上面的代码是否总是返回一个唯一的数字,我认为它会返回我当前的时间戳(只有第二个),这对于每个用户来说都是唯一的,我错了吗?

谢谢!

【问题讨论】:

  • 不,你不能保证它是唯一的。
  • 你可以通过在 php 文档php.net/manual/en/function.mktime.php987654321@中查找函数来轻松解决这个问题
  • 您的代码从当前时间开始计算秒数(例如,30 代表 2012-04-28 05:24:30)。然后将此数字输入到mktime()$hour 参数中。不,它不会总是返回一个唯一的数字……甚至几乎不会。

标签: php datetime


【解决方案1】:
  1. 只需使用time() 即可获取当前时间戳

  2. 每个用户的时间戳不是唯一的,并且不能被依赖为唯一值,因为如果同时调用多个用户可以获得相同的时间戳

【讨论】:

    【解决方案2】:

    不,当前时间戳不是唯一的。如果您需要一些独特的东西,请使用 PHP 的函数 uniqid。它根据当前时间(以微秒为单位)生成唯一标识符。

    【讨论】:

      【解决方案3】:

      不,如果您在同一秒内多次调用它(在同一个脚本中或在两个不同的请求中)它不会是唯一的。

      【讨论】:

        【解决方案4】:

        是的,什么脚本在同一秒内运行了两次?这根本不是不可能的。因此,您完全不能保证获得一个唯一的号码。如果您需要一些独特的东西,请创建一个(半)随机数,将每个使用过的数字保存在数据库/数据文件中,并检查每次之前是否使用过该数字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-03
          • 1970-01-01
          • 1970-01-01
          • 2020-10-30
          • 1970-01-01
          • 2014-09-20
          • 1970-01-01
          • 2013-10-29
          相关资源
          最近更新 更多