2012-04-25 70 views
2

我讀了UUID v4,它幾乎是唯一的,這就是我所需要的。問題是,這個數字太大了,是否可以使用較少的字符來生成UUID,如Facebook或Twitter?更短的UUID,ASCII碼和PHP PHP

我看了一些貼子,在這裏你可以用Ascii85將這段代碼縮小到20,但是沒有看到一個可靠的PHP腳本來完成這項工作。有人知道一個測試類?對於隨機ID而言,它是存儲這20個字符的最佳方式,對嗎?

---編輯---

@大衛·施瓦茨

感謝。我需要一個隨機的唯一標識符在一個單一的服務器,8至16個字符(如果它是最低的20,就可以了)。這個想法是識別具有可讀ID但不是增量的物品(第一個物品10001,第二個10002),542A4B243J,C63426KJ70,O30V4U1I9P等等。這些ID必須是(至少)6個MySQL表的主鍵。 Objets是使用PHP在同一臺服務器上創建的。

@ ta.speot.is

我寫的「沒有看到一個可靠的PHP腳本做的工作。有人知道一個測試類?」我不認爲在谷歌出現的所有代碼都經過測試,你有沒有測試過所有的鏈接?

@sarnold

謝謝,但我很抱歉,沒深知=(

+4

您需要詳細解釋您的要求以獲得有用的答案。例如,您是否需要能夠從大量完全不協調的位置生成身份證件,並讓它們保持獨特?或者,您可以爲每個ID分配器分配一個前綴,以便將問題簡化爲本地唯一ID?他們可以保存狀態,並拿起他們離開的地方嗎?或者它必須是純粹隨機的?它可以基於時間嗎?等等。 – 2012-04-25 23:06:18

+0

http://www.google.com.au/search?rlz=1C1_____enAU376AU376&sourceid=chrome&ie=UTF-8&q=php+ascii85 – 2012-04-25 23:06:24

+0

不要忘了將你的UUID從36字節的「平常風格」轉換爲一個整數範圍爲'0' - '2^128 - 1' - 您不一定需要使用128位整數,但您至少必須以適當的四字節塊處理輸入,就好像它是128位長。 – sarnold 2012-04-25 23:17:00

回答

0

我面臨着一個企業的項目,我工作的同樣的問題,我無法找到一個合理的。測試和PHP快速解決方案,因此我決定寫一個PHP擴展,它可以被用來編碼/用base85/ASCII85解碼數據

你可以看看這裏:https://github.com/miezuit/php-base85

它使用一個測試一套自動化測試秒。