2 回答

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以使用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);
結(jié)果:
25558478919927842
25558478919929611
25558478919930289
25558478919930576
25558478919930779
1597318697.2849
1597318697.2849
1597318697.2849
1597318697.2849
1597318697.2849
1597318697.2849
上面相當(dāng)于幾個(gè)用戶會(huì)同時(shí)訪問(wèn)機(jī)票訂單。正如你所看到的,微時(shí)間是不夠的。
但您可以使用上面的最后 5 個(gè)數(shù)字,即 27842,并且很可能是唯一的。
除此之外,您可以在前面放置一個(gè)用戶 ID 以獲得更多熵。
如果您想要連續(xù)且 100% 防止重復(fù),那么您唯一的選擇是使用存儲(chǔ)在數(shù)據(jù)庫(kù)中的增量 ID。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果票號(hào)不必按特定順序排列,您可以生成隨機(jī)票號(hào):
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';
對(duì)于十六進(jìn)制票號(hào)。
- 2 回答
- 0 關(guān)注
- 155 瀏覽
添加回答
舉報(bào)