2 回答
TA贡献2041条经验 获得超4个赞
您可以使用hrtime()
<?php
// hrtime
echo hrtime(true).PHP_EOL.
hrtime(true).PHP_EOL.
hrtime(true).PHP_EOL.
hrtime(true).PHP_EOL.
hrtime(true).PHP_EOL;
// microtime
echo microtime(true).PHP_EOL.
microtime(true).PHP_EOL.
microtime(true).PHP_EOL.
microtime(true).PHP_EOL.
microtime(true).PHP_EOL.
microtime(true);
结果:
25558478919927842
25558478919929611
25558478919930289
25558478919930576
25558478919930779
1597318697.2849
1597318697.2849
1597318697.2849
1597318697.2849
1597318697.2849
1597318697.2849
上面相当于几个用户会同时访问机票订单。正如你所看到的,微时间是不够的。
但您可以使用上面的最后 5 个数字,即 27842,并且很可能是唯一的。
除此之外,您可以在前面放置一个用户 ID 以获得更多熵。
如果您想要连续且 100% 防止重复,那么您唯一的选择是使用存储在数据库中的增量 ID。
TA贡献1828条经验 获得超3个赞
如果票号不必按特定顺序排列,您可以生成随机票号:
function generate_string($input, $strength = 10) {
$input_length = strlen($input);
$random_string = '';
for ($i = 0; $i < $strength; $i++) {
$random_character = $input[random_int(0, $input_length - 1)];
$random_string .= $random_character;
}
return $random_string;
}
与例如
$input = '0123456789';
甚至
$input = '0123456789ABCDEF';
对于十六进制票号。
- 2 回答
- 0 关注
- 108 浏览
添加回答
举报