PHP 隨機用戶名賬號的生成

jopen 9年前發布 | 916 次閱讀 PHP

隨機生成難點是在于如何避免碰撞,有人說用md5,GUID這些機制啊,當然可以,但是做為賬號,看著有亂,而且生成位數也過長。

本方法只需要解決1秒內的并發碰撞就可以,因為固定頭部采用的是unixtime時間,精確到秒,超過1秒,這個頭部的時間肯定變化了。同時本方法也可以用戶隨機訂單編號的生成。

測試條件是用循環創建1萬個隨機賬號(毫秒級),0碰撞,10萬個大約有0-3個碰撞。應該沒有哪個互聯網公司會在瞬間同時創建這么多賬號,所以足夠應付數十億PV這么大的規模了。

// 自動生成隨機用戶名
// 測試,循環創建1萬個隨機賬號,0碰撞,10萬大約0-3個碰撞,足夠應付未來數十億級PV
private function genUserNumber()
{
    $chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $username = "";
    for ( $i = 0; $i < 6; $i++ )
    {
        $username .= $chars[mt_rand(0, strlen($chars))];
    }
    return strtoupper(base_convert(time() - 1420070400, 10, 36)).$username;
}

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!