PHP在分布式環境生成唯一字串

2021-08-14 14:17:24 字數 586 閱讀 7570

在分布式環境下,我們通常需要生成乙個絕對唯一的字串

但是因為uniqid是基於微妙時間的,所以很多情況下在多程序,分布式高併發的時候表現有些差強人意,還是會出現重複的可能。

雖然資料庫可以用唯一索引解決這個問題,但是首先分布式的資料庫設計不一定能很方便的設計唯一索引,其次我們更應該在程式上下點功夫找找原因,因此我決定對uniqid進行必要的改進。

在這裡闡述一下原理。

我將新的唯一字串組成分成了三個部分,第乙個部分是對$_server陣列轉字串後取得特徵值(4位),第二部分是取得當前所在程序的pid(多程序併發)的特徵值(4位),第三部分是對原uniqid的md5(12位)。新組成的字串即可在一般的分布式伺服器上作為唯一特性更好的uniqid。

使用方法

use beiyii\superuniqid\superuniqid;

echo superuniqid::get();

composer:

composer require beiyii/superuniqid dev-master

github:

PHP之生成唯一字串

生成唯一字串 0 存數字字串 1 小寫字母字串 2 大寫字母字串 3 大小寫數字字串 4 字元 5 數字,小寫,大寫,字元混合 param integer type 字串的型別 param integer length 字串的長度 param integer time 是否帶時間1 帶,0 不帶 r...

php 生成分布式唯一ID

生成唯一id,主要針對的是分布式服務 md5 伺服器mac位址 時間戳 程序id 自增id 當應用於api時,由於 nginx 程序id一直在變化,所以自增id可以使用隨機數,同時避免檔案鎖影響api能力 ip位址 function getipaddr return preg replace ipa...

38 字元中的唯一字元

原題目 給定乙個字串,找到它的第乙個不重複的字元,並返回它的索引。如果不存在,則返回 1。示例 s leetcode 返回 0 s loveleetcode 返回 2 思路 用for迴圈遍歷每乙個元素,然後用find函式從前到後尋找這個元素並返回這個元素所在的位置,用rfind從後到錢尋找這個元素並...