怎麼產生唯一數字

來源:互聯網
上載者:User
比方說時間戳記已經產生了 然後再怎麼處理保證唯一。。


回複討論(解決方案)

time().mt_rand(100000,99999).mt_rand(100000,999999)

沒法保證絕對唯一! 

時間戳記 在秒間是唯一的
php 提供的最小時間解析度為 微秒

微秒+???

function uninum(){list($sec, $usec) = explode(' ',microtime());return str_replace('.','',sprintf('%f',$sec + $usec).mt_rand(100000,999999));}echo uninum();

時間戳記 在秒間是唯一的
php 提供的最小時間解析度為 微秒

哈哈 微秒可以有

time()

單擊無法保證唯一

時間+資料庫唯一數字??>唯一數字

用微秒的函數 在連上一個隨機數什麼的 就已經有很好的唯一性了

用時間戳記+隨機

比如時間戳記是445656623323
後面再加上5位隨機數

主要基本能保證不重複,但不能保證絕對不重複,不過要是重複了,機率相當於買大樂透,2元一次,連中十多二十次呢。

如果你覺得5位隨機數不夠,可以增加到20位,30位,如果你的伺服器能撐得住的話,機率相當於明天看到外星人了。


當然,如果你還不放心的話,還有兩個辦法,時間戳記+IP地址組合+兩三位隨機數,這個就絕對不會重複了

另一個辦法就是時間戳記+隨機數,寫進資料庫前對照一下看看有沒有一樣的,如果有,重建隨機數。

用時間戳記+隨機

比如時間戳記是445656623323
後面再加上5位隨機數

主要基本能保證不重複,但不能保證絕對不重複,不過要是重複了,機率相當於買大樂透,2元一次,連中十多二十次呢。

如果你覺得5位隨機數不夠,可以增加到20位,30位,如果你的伺服器能撐得住的話,機率相當於明天看到外星人了。


當然,如果你還不放心的話,還有兩個辦法,時間戳記+IP地址組合+兩三位隨機數,這個就絕對不會重複了

另一個辦法就是時間戳記+隨機數,寫進資料庫前對照一下看看有沒有一樣的,如果有,重建隨機數。



最新版本的 PHP date新增了u,可以顯示毫秒。
其實最安全的唯一數肯定是根據時間來的。

1)microtime(true)
2) uniqid()
3) 根據使用者IP+瀏覽器標示頭+時間戳記

時間戳記+md5(字串)

也可以用mysql表的自增id作為唯一數

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.