如何生成最多 9 位无字符的 uniqId

How to generating uniqId up to 9 digits without characters

我想根据时间戳生成一个唯一编号。
在二十四小时内,每个请求都必须有一个不同于所有其他请求的唯一编号。

关于如何生成最多 9 位数字的任何想法?

你可以使用

echo rand(1,999999999);die;

但是唯一编号的 9 位数字是不够的,这取决于您要生成的唯一密钥的数量

有两种全局类型的解决方案:

  1. 将所有唯一 ID 存储在一个地方 generate/increment。最佳示例:将请求存储在 (MySQL) 数据库中,其中索引是自动增量的。

  2. 另一种解决方案是尝试根据微时间计算唯一ID。作为此选项的示例,我们可以直接使用:

    filter_var($_SERVER['REQUEST_TIME_FLOAT'], FILTER_SANITIZE_NUMBER_INT);
    

    这将 return 9-13 个字符的字符串,或者我们可以使用 PHP 的 uniqeid function:

    来获取唯一的字符串
    $my_id = uniqid();
    

    Gets a prefixed unique identifier based on the current time in microseconds.

    因为它是基于微时间的,所以 return 值是 13 个字符长。

    如果你想让它更独特,你也可以这样使用前缀:

    $my_id = uniqid( $_SERVER['REMOTE_ADDR'] );
    

    但比return值会更长。