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 關注
- 159 瀏覽
添加回答
舉報