2015-12-22 104 views
-1

我的目標是創建一個唯一的id將它附加到記錄並將其存儲在數據庫中。該ID應該是字母數字和簡寫。我不想使用自動增量生成ID的方式,因爲這個ID將被附加到URL的末尾,所以我不希望它是可以猜測的。經過一番研究,我決定使用uniqid(),據我瞭解,它是基於時間生成的。使用PHP uniqid函數生成簡短的唯一引用id

我的擔心是它將在整個系統中是唯一的,並且如果我要使用多個服務器和集羣來擴展我的系統,那麼是否有機會讓 ID重複?

我不想在將值插入數據庫之前進行重複檢查,因爲隨着記錄數的增加,這會影響性能。

我正在使用Larvel框架。任何人都可以提出任何其他解決方案來解決這個問題。我是laravel新手。

在此先感謝

+0

你有沒有考慮過使用mysql的內置uuid()函數呢? – Shadow

+0

@Shadow mysql uuid()函數給出了一個長度大約爲36個字符的結果,而UUID_SHORT()函數接近17個字符。我想要一些小東西 – Savitha

+0

你有矛盾的要求。你想要的東西很短,但全球獨一無二。 – Shadow

回答

0

感謝您的所有建議。我決定使用帶有前綴的uniqid()作爲user_id。由於uniqid()是系統時間相關的,並且當2個同時請求到達服務器時可能導致衝突,所以user_id前綴將確保即使同時發出請求,它也會生成不同的id,因爲與每個請求關聯的user_id將不同。