>  기사  >  백엔드 개발  >  求一个不会生成重复值的短网址算法

求一个不会生成重复值的短网址算法

WBOY
WBOY원래의
2016-06-23 14:12:391298검색

求一个不会生成重复值的短网址算法,网上找了一些,都有一定重复的概率,或者能提供一种重复概率最小的算法也行


回复讨论(解决方案)

这个应该是先生成一个随机字符串,
然后查询数据库中是否已经存在,
不存在就入库,
存在就再换一个再查,

短址本来就只有五位左右的长度,
我觉得不管用什么算法都不可能保证不重复,
所以只能通过对以前生成的来对比。

最简单就是,随机串是根据对应id生成的,也就是看着像随机串,其实是id根据一定的规则生成的,基本上在没有得到这个id范围的上线的话,是不会用重复的

我自己想到的是base62算法 呵呵~~~

<?phpfunction base62($i){	if($i<0) return '';	$ch = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';	$a='';do{$a=$ch[$i%62].$a;$i=intval($i/62);}while($i>0);return $a;}echo base62(63);?>



由一个整型ID 生成它的base62编码
比如 
61 => 10
63 => 11
..
71 => 1a
72 => 1b
900000000(9亿) => YUj72

都会重复的 可以在数据库中做记录

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.