php生成遊客id PHP如何生成唯一的數字ID

2021-10-22 21:19:52 字數 1087 閱讀 4996

樓主,你這個問題大了。

twitter,weibo等都是專門做了乙個發號器來解決這個問題的。

twitter那一套東西,叫做snowflake,樓上已經有人指出過了。這玩意一共64bit,前41bit是以微妙的時間戳,10bit是機器護著說伺服器id,最後12bit是seq序列累加計數器。

weibo的方法和twitter是很類似的,將id分割為n個段,每段採集一定的資料來源,最後生成乙個高度唯一的id。

flickr是用的乙個叫做ticketserver的玩意,使用純mysql來實現的。

create table ticket(

id bigint unsigned not null auto_increment primary key,

stag char(1) not null default '',

unique key stag(stag)

)engine=myisam;

先插入一條記錄,然後再用replace去獲取這個id。

replace into ticket(stag) values('a');

select last_insert_id();====>id

然後是,uuid也是乙個不錯的選擇,但是uuid生成的序列太長,而且mysql本身不具備原生支援(我假裝樓主用的mysql),但樓主可以嘗試把uuid當作binary(16)來儲存效果會好些兒。但樓主說是純數字,那就白搭了。

還有一種,是我群裡聽到的。就是提前生成一大坨可用的唯一的id,用的時候直接取然後del掉,這也是可行的,因為說這個方案的那個人是個大神。為什麼提前生成呢,我覺得最主要一條就是預防高併發情況下,兩個人得到的id是一樣 ; 提前生成的話可以排隊乙個乙個生成,確保唯一。當然,他們的生成策略是什麼我就不太清楚了。樓主可以參考twitter的做法。

另有,mongodb自帶的objectid也是一種高度唯一的序列,樓主可以利用mongodb生成的直接拿過來用,但也要確保高併發情況下,兩個人或者更多人得到同乙個id,雖然概率很低。但樓主說是純數字,那還是白搭。

如果樓主玩的單機,那就不用太糾結唯一id的問題,主鍵自增就可以做唯一id。太長遠的問題,現在可以考慮,但不能過於拘泥。如果樓主是分布式,那就是要必須了要這個東西了。

如何用php生成WAP頁面

wap 無線通訊協議 是在數字移動 個人手持裝置 pda等 及計算機之間進行通訊的開放性全球標準。由於靜態的wap 頁面在很多方面不能滿足使用者個性化的服務請求,因此通過wap伺服器端語言產生動態的wml頁面,具有很廣泛的應用價值和很高的商業價值。wap應用結構非常類似於internet,乙個典型的...

PHP 如何生成驗證碼

在php中有乙個函式rand 它的作用就是產生乙個隨機整數 兩個語法為 int rand void int rand int min,int max 有限制有條件的挑選隨機數 沒有條件限制的產生隨機整數,為 str abcdefghijklmnopqrstuvwxyz0123456789 echo ...

php 生成不同的簡訊驗證碼 php驗證碼生成器

現在很多 都有實現使用者集。然而為了防止機械人的網路攻擊。限制登陸或者註冊是有必要的。在註冊和登陸時強制要求輸入乙個機器難以識別的字串集是乙個不錯的選擇。雖然不能解決根本問題,但至少可以增加他們的成本。利用php生成驗證碼需要用到gd2庫。gd2庫引用方法網路上有很多,不同作業系統匯入方式也不同。這...