[請益] UUID

看板PHP作者 (接科噎歐)時間13年前 (2012/10/16 15:46), 編輯推噓3(3010)
留言13則, 5人參與, 最新討論串1/1
搜尋了幾個產生UUID的function但總覺得不符合自己的需求 因此自己寫了一個簡單的隨機產生字串的function function genMyUUID( $len ){ $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"; $key = ""; $randMax = strlen( $chars ) - 1; for( $i = 0 ; $i < $len ; $i++ ) { $key.= $chars[ mt_rand( 0, $randMax ) ]; } return $key; } 丟進去要產生字串的長度,例如16 便會拿到像: ioCte52-76fsTSDG 這種字串,簡單用數學機率算了一下,每2個長度為16的字串 的碰撞機率應該是 (1/64)^16 這樣? 想請問這樣會比像這底下這種常見產生UUID的function來得好嗎? function uuID( $prefix = "" ){ return $prefix.md5( uniqid( mt_rand(), true ) ); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.198.81

10/16 16:14, , 1F
通常.... 那些已經寫好的function都是經過千錘百鍊的,沒必
10/16 16:14, 1F

10/16 16:14, , 2F
要隨便挑戰。
10/16 16:14, 2F

10/16 16:15, , 3F
如果自己有特殊需求,要自己寫的話,那另當別論
10/16 16:15, 3F

10/16 16:23, , 4F
就是有特殊需求 @@",長度、出現的字元…
10/16 16:23, 4F

10/16 16:23, , 5F
再來是看到有關md5的討論,對它實在不大放心
10/16 16:23, 5F

10/16 16:34, , 6F
md5不敢用,改用SHA1就好了,有什麼好怕的
10/16 16:34, 6F

10/16 16:39, , 7F
sha一樣不符合需求啊,長度、出現的字元
10/16 16:39, 7F

10/16 16:40, , 8F
那的確是自己編會比較好..... 不過,我想建議,最好能拿某
10/16 16:40, 8F

10/16 16:42, , 9F
種東西來當key去換算成字串會比較好,例如那筆資料的主鍵
10/16 16:42, 9F

10/16 16:42, , 10F
這樣絕對能防止撞到
10/16 16:42, 10F

10/16 17:04, , 11F
推LaPass大,我再加上microtime
10/16 17:04, 11F

10/16 17:22, , 12F
先在算個1m uuid 進db 要用一個一個拿.
10/16 17:22, 12F

10/18 11:27, , 13F
為什麼不是找native implementation來用?
10/18 11:27, 13F
文章代碼(AID): #1GVH35pY (PHP)
文章代碼(AID): #1GVH35pY (PHP)