<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    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兩種基本的輸出方及實例詳解 PHP遍歷數組的6種方式總結 JS截取字符串的三種方法詳解 Python常用的正則表達式處理函數詳解 一文秒懂python正則表達式常用函數 python正則表達式語法學習筆記 Python&nbsp;垃圾回收機制詳解 Python實現城市公交網絡分析與可視化 Python數據分析處理(三)--運動員信息的分組與聚合 基于Python實現PDF區域文本提取工具 詳解python的循環 python實現新年倒計時實例代碼 Python實現消消樂小游戲 學習python的while循環嵌套 提升Python運行速度的5個小技巧 Python按鍵或值對字典進行排序 圖像檢索之基于vlfeat實現SIFT特征 python繪圖中的四個繪圖技巧 js中toString方法3個作用 信息系統項目管理師報考條件 PHP7中對十六進制字符串處理的問題詳解 PHP對接抖音開發平臺接口的詳細教程 php7安裝mysqli實例講解 php去掉一維數組的鍵值的實例方法 PHP中empty()和isset()的區別介紹 PHP實現JWT的Token登錄認證 php判斷時間戳是否為今天實例講解 PHP7 preg_replace出錯及解決辦法 五年班的學習計劃怎么寫 五年級的學習計劃 初中新學期學習計劃怎么寫 關于英語的學習計劃怎么寫 怎么寫暑假學習計劃書 4年級數學學習計劃怎么寫 后半學期的學習計劃怎么寫 上學期學習計劃怎么寫 五年級的學習計劃書怎么寫 小學一年級學習計劃怎么寫 暑假學習計劃表怎么寫 八年級學習計劃怎么寫 暑期學習計劃表怎么寫
    Top 日产精品一线二线三线芒果| 无码8090精品久久一区| 久久精品国产一区二区三区日韩| 国产成人精品视频网站| 香蕉久久夜色精品国产尤物| 久久精品女人毛片国产| 久久精品国产99久久香蕉| 国产成人精品免费视频软件| 亚洲а∨天堂久久精品9966| 久久亚洲国产精品成人AV秋霞| 精品一卡2卡三卡4卡免费视频| 国产精品玖玖美女张开腿让男人桶爽免费看 | 国产精品高清尿小便嘘嘘| 国产韩国精品一区二区三区久久| 亚洲Av无码精品色午夜| 热久久这里是精品6免费观看| 国产99视频精品免费视频76| 国产精品嫩草影院永久一| 思思久久96热在精品国产| 97久久国产亚洲精品超碰热| 久久久久久国产精品免费无码| 久久伊人精品热在75| 久久97精品久久久久久久不卡| 人人妻久久人人澡人人爽人人精品| HEYZO无码综合国产精品227| 国产aⅴ精品一区二区三区久久| 精品真实国产乱文在线| 人妻少妇精品视频三区二区一区| 国产精品一久久香蕉产线看| 2021国产精品久久久久| 99re视频精品全部免费| 欧洲精品视频在线观看| 精品在线免费观看| 国产成人亚洲综合无码精品| 久久精品国产福利国产秒| 国产一区二区精品| 国产精品免费高清在线观看| 久热这里只精品99国产6_99| 久久久久亚洲精品影视| 久久夜色精品国产网站| 91精品国产自产在线观看高清|