日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

DonkeyID---php扩展-64位自增ID生成器

發布時間:2025/6/17 php 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DonkeyID---php扩展-64位自增ID生成器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

##原理

參考Twitter-Snowflake 算法,擴展了其中的細節。具體組成如下圖:

如圖所示,64bits 咱們分成了4個部分。

  • 毫秒級的時間戳,有42個bit.能夠使用139年,從1970年開始計算,能使用到2109年,當然這些是可以擴展的,可以通知指定起始時間來延長這個日期長度。
  • 自定義節點id,防止多進程運行產生重復id,占位12個bit,能夠支持4096個節點。部署的時候可以配置好服務器id;
  • 進程workerid,占位5bit,能夠生成32個進程id。根據pid運算獲得。(已經取消)
  • 進程內毫秒時間自增序號。占位10bit,一毫秒能產生1024個id。也就是說并發1秒能產生1024000個id。
  • ###唯一性保證

    100%唯一性保證,根據nodeid的不一樣保證多服務器的唯一性,使用共享內存+自旋鎖保證單節點多進程的唯一性 同一毫秒內自增變量保證并發的唯一性。

    ###安裝DonkeyID擴展

    cd /usr/local/php/include/php/ext sudo git clone https://github.com/osgochina/donkeyid.git cd /usr/local/php/include/php/ext/donkeyid/donkeyid sudo phpize sudo ./configure --with-php-config=/usr/local/php/bin/php-config sudo make && sudo make install

    ?

    配置

    在php.ini 中配置節點id

    [DonkeyId] ;0-4095 donkeyid.node_id=0 ;0-當前時間戳 donkeyid.epoch=0

    ?

    ####api接口

    • dk_get_next_id()

    獲取基于Snowflake算法的id

    • dk_get_next_ids(num,num,time=0)

    獲取基于Snowflake算法的id列表.num:id,num:生成id的數量,time:需要生成指定時間的id.$time 默認為0 生成當前時間指定數量的id

    • dk_parse_id($id)

    解析基于Snowflake算法的id元數據,返回值包括:time id生成時間,node_id 節點id,sequence 自增數

    • dk_get_ts_id()

    獲取10進制的時間戳類型的id

    • dk_get_ts_ids(num,num,time=0)

    獲取10進制的時間戳類型的id列表.num:id,num:生成id的數量,time:需要生成指定時間的id.$time 默認為0 生成當前時間指定數量的id

    • dk_parse_ts_id($tsid)

    解析10進制的時間戳類型的id元數據,返回值包括:time id生成時間,node_id 節點id,sequence 自增數

    • dk_get_dt_id()

    獲取字符串類型的id,顯式包含日期時間屬性

    ?

    轉載于:https://www.cnblogs.com/starfish29/p/11492548.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的DonkeyID---php扩展-64位自增ID生成器的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。