高並發 php uniqid 不重複唯一識別碼產生方案

來源:互聯網
上載者:User
HP uniqid()函數可用於產生不重複的唯一識別碼,該函數基於微秒級目前時間戳。在高並發或者間隔時間長度極短(如迴圈代碼)的情況下,會出現大量重複資料。即使使用了第二個參數,也會重複,最好的方案是結合md5函數來產生唯一ID。
PHP uniqid() 產生不重複唯一標識方法一

這種方法會產生大量的重複資料,運行如下PHP代碼會數組索引是產生的唯一標識,對應的元素值是該唯一標識重複的次數。 [php]  view plain  copy <?php           $units = array();           for($i=0;$i<1000000;$i++){                   $units[] = uniqid();           }           $values  = array_count_values($units);           $duplicates = [];           foreach($values as $k=>$v){                   if($v>1){                           $duplicates[$k]=$v;                   }           }           echo '<pre>';           print_r($duplicates);           echo '</pre>';   ?>  
PHP uniqid() 產生不重複唯一標識方法二
這種方法產生的唯一標識重複量明顯減少。

[php]  view plain  copy <?php           $units = array();           for($i=0;$i<1000000;$i++){                   $units[] = uniqid('',true);           }           $values  = array_count_values($units);           $duplicates = [];           foreach($values as $k=>$v){                   if($v>1){                           $duplicates[$k]=$v;                   }           }           echo '<pre>';           print_r($duplicates);           echo '</pre>';   ?>  
PHP uniqid() 產生不重複唯一標識方法三
這種方法產生的唯一標識中沒有重複。

<?php
        $units = array();
        for($i=0;$i<1000000;$i++){
                $units[]=md5(uniqid(md5(microtime(true)),true));
        }
        $values  = array_count_values($units);
        $duplicates = [];
        foreach($values as $k=>$v){
                if($v>1){
                        $duplicates[$k]=$v;
                }
        }
        echo '<pre>';
        print_r($duplicates);
        echo '</pre>';
?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.