<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    php生成唯一uid的解決方法詳解

    文檔

    php生成唯一uid的解決方法詳解

    在用戶系統中,生成唯一uid,是很多初級程序員頭痛的事情,因為你并不能保證完全的唯一性,如果要保證唯一性,必須要查一次數據庫。本文將介紹php生成唯一uid的思路,希望能對大家有所幫助。
    推薦度:
    導讀在用戶系統中,生成唯一uid,是很多初級程序員頭痛的事情,因為你并不能保證完全的唯一性,如果要保證唯一性,必須要查一次數據庫。本文將介紹php生成唯一uid的思路,希望能對大家有所幫助。

    一、生成唯一uuid

    二、生成唯一uid

    三、生成唯一uid的正確方法

    一、生成唯一uuid

    看到某些人會用uuid去代替用戶的uid

    從代碼中可以看出,通過unique生成一個以毫秒級時間戳為前綴的字符后md5加密

    再通過分隔符進行分割后得到uuid

    這種方式雖然極大程度的避免了uid的重復

    但是生成的uid太長,足足36個字符,而且是混雜英文和數字符號的,可讀性很差

    而一般的uid中都是純數值組成的

    function?generateUUid($strtoupper?=?false)
    {
    ????$charid?=?call_user_func($strtoupper???'strtoupper'?:?'strtolower',?md5(uniqid(microtime(true),?true)));
    ????$hyphen?=?chr(45);
    ????$uuid?=?substr($charid,?0,?8)?.?$hyphen?.?substr($charid,?8,?4)?.?$hyphen?.?substr($charid,?12,?4)?.?$hyphen?.?substr($charid,?16,?4)?.?$hyphen?.?substr($charid,?20,?12);
    ????return?$uuid;
    }
    ?
    //結果:37f14a07-cb18-2e54-4e40-da1e2fa0456d
    二、生成唯一uid

    由于一般正常的uid都是純數值型的

    而要保證唯一性,必然要跟時間戳有關系,因此有了以下代碼

    為了盡可能的在同一秒中注冊人數的uid不同,將時間戳進行打亂隨機排序,也不失為一個好辦法

    但是這種缺點就是,uid長度是固定的,無法進行改變,雖然呢,打亂字符是一個很好的解決重復的方式

    但是事情無絕對,如果真的因為隨機碰撞導致的uid相同該如何

    為了更保險起見,必然還是要走一次數據庫的查詢

    大大增加了數據庫的I/O壓力

    function?generateUid()
    {
    ????return?call_user_func('str_shuffle',?time());
    }
    ?
    //結果:4067524162
    三、生成唯一uid的正確方法

    雖然說上面的兩種方式并非不可取

    但是在大型公司必然不可取,一種是uid的格式必然純數值,所以uuid方式可以排除

    另外由于對數據庫的壓力起見,必然也不會采用第二種方式

    而最經常采用的方式應該是使用數據庫的主鍵索引,因為主鍵索引必然唯一

    這里很多人會疑惑,主鍵索引不是會從1開始嗎,這uid會有1位數的?

    小了,格局小了,你可以設置主鍵索引的offset,讓他從100000開始,不就可以解決這個問題了嗎

    這時候有人又問,那主鍵索引增加不是有規律的嗎,比如插一條,會自增1

    這時候就可以設置主鍵索引的增長步長,讓他插入一條的步長不為1即可

    而為了讓uid看起來更加沒有關聯性,你可以設置步長為基數,比如3

    這樣增長起來,就會是100000,100003,100006,100009,100012....

    補充

    php中生成標準uuid的方法

    UUID是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。

    通常平臺 會提供生成UUID的API。UUID按照開放軟件基金會(OSF)制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。

    由以 下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相 同),時鐘序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在于生成的結果串會比較長。

    關于 UUID這個標準使用最普遍的是微軟的GUID(Globals Unique Identifiers)。

    在ColdFusion中可以用CreateUUID()函數很簡單的生成UUID,其格式為:xxxxxxxx-xxxx-xxxx- xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內的一個十六進制的數字。

    而標準的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)

    function?guid(){
    ?if?(function_exists('com_create_guid')){
    ??return?com_create_guid();
    ?}else{
    ??mt_srand((double)microtime()*10000);//optional?for?php?4.2.0?and?up.
    ??$charid?=?strtoupper(md5(uniqid(rand(),?true)));
    ??$hyphen?=?chr(45);//?"-"
    ??$uuid?=?chr(123)//?"{"
    ????.substr($charid,?0,?8).$hyphen
    ????.substr($charid,?8,?4).$hyphen
    ????.substr($charid,12,?4).$hyphen
    ????.substr($charid,16,?4).$hyphen
    ????.substr($charid,20,12)
    ????.chr(125);//?"}"
    ??return?$uuid;
    ?}
    }
    echo?guid();
    ?>

    到此這篇關于php生成唯一uid的解決方法詳解的文章就介紹到這了。

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    文檔

    php生成唯一uid的解決方法詳解

    在用戶系統中,生成唯一uid,是很多初級程序員頭痛的事情,因為你并不能保證完全的唯一性,如果要保證唯一性,必須要查一次數據庫。本文將介紹php生成唯一uid的思路,希望能對大家有所幫助。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    php兩種基本的輸出方及實例詳解 PHP遍歷數組的6種方式總結 JS截取字符串的三種方法詳解 Python常用的正則表達式處理函數詳解 一文秒懂python正則表達式常用函數 python正則表達式語法學習筆記 帶動物的詩句 如何關閉360畫報 叮咚怎么搶菜 網易云一起聽怎么添加歌 adobe creative cloud是什么軟件 24歲是什么年華 季度怎么劃分 什么是防范區 大怨種是個啥 七月初七有哪些風俗 參照密接是什么意思 媚宅是什么 詠雪的詩句 傳統節日的詩句 PHP7中對十六進制字符串處理的問題詳解 PHP對接抖音開發平臺接口的詳細教程 php7安裝mysqli實例講解 php去掉一維數組的鍵值的實例方法 PHP中empty()和isset()的區別介紹 PHP實現JWT的Token登錄認證 php判斷時間戳是否為今天實例講解 PHP7 preg_replace出錯及解決辦法 關于杏花的詩句 帶飛的詩句 形容女人漂亮的詩句 春花的詩句 描寫初春的詩句 描寫燕子的詩句 帶有春字的詩句 春游的詩句 形容美女的詩句 有意境的詩句 形容春天的詩句唯美 踏春的詩句
    Top 久久精品麻豆日日躁夜夜躁| 久久91精品国产91久久麻豆| 国产精品福利一区二区| 在线精品动漫一区二区无广告| 国产精品久久久久久久久kt| 久久精品卫校国产小美女| 日本精品不卡视频| 久久精品免费网站网| 国产精品亚洲一区二区三区久久 | 69堂国产成人精品视频不卡 | 久久精品*5在热| 久久91这里精品国产2020| 国产在视频线精品视频| 国产精品麻豆成人AV电影艾秋| 亚洲区精品久久一区二区三区 | 精品久久久久久久久久久久久久久 | 亚洲精品无码人妻无码| 2021国内精品久久久久影院| 久久精品亚洲综合| 久久精品成人国产午夜| 香蕉伊思人在线精品| 亚洲精品国产精品乱码不卞| 国产精品久久香蕉免费播放| 免费无码精品黄AV电影| 国产精品久久婷婷六月丁香| 国产短视频精品一区二区三区| 91大神在线精品网址| 99久久精品国产免费| 亚洲一区精品中文字幕| 久久久久亚洲精品影视| 久久精品视频一区| 亚洲av午夜福利精品一区| 亚洲国产精品无码一线岛国| 国产亚洲婷婷香蕉久久精品| 国语自产偷拍精品视频偷拍| 国产A三级久久精品| 亚洲伊人久久精品影院| 久久91精品久久91综合| 亚洲国产精品一区二区成人片国内| 久久精品国产亚洲| 无码少妇精品一区二区免费动态|