本文章主要記錄我在工作中常用的composer 開發(fā)包
- 字符串替換的 微模板引擎庫 mustache (有c語言擴展版的)
安裝 : composer require mustache/mustache
(new \Mustache_Engine())->render("hello {{name}},{{sex}}",[
"name"=>"wj","sex"=>"男"
]); // hello wj,男
- http請求庫 guzzlehttp/guzzle
安裝 : composer require guzzlehttp/guzzle
詳情使用參考文檔: https://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html#id2
- Jwt 生成
安裝: composer require firebase/php-jwt
- 雪花算法庫 snowflake
安裝: composer require godruoyi/php-snowflake
第1個 bit 為未使用的符號位。
第2部分由 41 位的時間戳(毫秒)構成庇谆,他的取值是當前時間相對于某一時間的偏移量搅吁。
第3部分和第4部分的 5 個 bit 位表示數據中心和機器ID,其能表示的最大值為 2^5 -1 = 31虏冻。
數據中心 datacenter 和 workerid最大值為31
第5部分由 12 個 bit 組成,其表示每個工作節(jié)點每毫秒生成的序列號 ID,同一毫秒內最多可生成 2^12 -1 即 4095 個 ID欲逃。 每個中心的每個機器一毫秒可生產 4095個id≡持睿可保證絕對唯一
對比優(yōu)勢:
1.分布式系統中絕對唯一婚被。
2.占位短,全部由數字組成, 沒有設置時間信息長度為18. 設置時間信息長度為19位梳虽。實際開發(fā)中建議帶上 帶上時間戳信息址芯,這樣可以反解析出id的生成時間
3.攜帶信息量大,有蹤跡可循窜觉,可以解析出大量信息谷炸。
$datacenter = 0; // 數據中心 取值范圍 0-31。在分布式系統中
$workerid = 0; // 取值范圍也是 0-31
$snowflake = new \Godruoyi\Snowflake\Snowflake($datacenter,$workerid);
$sfid =$snowflak->id(); // 生成id長度是18位
// $sfid = "6719170409868169216";
$parse = $snowflake->parseId($sfid,true);
$sfid =$snowflake->setStartTimeStamp(1)->id(); // 生成id長度是19位, 可以通過parse解析出生成的時間
- uuid生成庫
安裝: composer require ramsey/uuid
6.根據ip地址查找歸屬地
安裝: composer require ritaswc/zx-ip-address
$result = \Ritaswc\ZxIPAddress\IPv4Tool::query('114.114.114.114');
- 鎖工具庫 malkusch/lock
安裝: composer require malkusch/lock
該庫支持多種驅動實現 同步互斥鎖禀挫。包括 redis,memcache旬陡,file,mysql驅動。