php+MySQL的對用戶表分表,使用戶均勻分布


假如說我們目前已有一億個注冊用戶,要把這些用戶平均分配到100張表中,並且后續注冊的用戶也要均勻分配到這100張表

首先當用戶注冊時,如用戶名為“username”,用php的crc32()函數處理用戶名,得到一個數值4166911607,代碼如下

<?php
$str='username';
$num=sprintf("%u",crc32($str));

注意:由於 PHP 的整數是帶符號的,所以在 32 位系統上許多 crc32 校驗碼將返回負整數。 盡管在 64 位上所有 crc32() 的結果將都是正整數。因此你需要使用 sprintf()的“%u”格式符來獲取表示無符號 crc32 校驗碼的字符串。

然后,我用得到近個數值變量求模,$num%100=47,因此我們把'username'添加到第47個表中。

同樣的,當用戶登錄時我們就可以通過同樣的方法去第47個表中查找用戶名為'username'的數據

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM