PHP 生成邀请码(随机字符串) 数据量大之后 生成长度+1

在写一个项目 用户量比较大 要生成邀请码 考虑到用户输入方便 决定用6位 长度开始
然后查询数据库 如果查询10次 还是有重复的 说明生成的随机邀请码 已经重复率比较高了 这个时候 生成的邀请码长度+1

这是一个测试版本 初步跑了一下 没有问题 等数据量大之后 要测试问题

function get_invitation(){
	$str = set_invitation();
	$return_str = testing_single($str);
	return $return_str;
}
function set_invitation($len = 6,$chars = null){
	if (is_null($chars)) {
            $chars = "abcdefghijklmnopqrstuvwxyz0123456789";
        }
        mt_srand(10000000 * (double)microtime());
        for ($i = 0, $str = '', $lc = strlen($chars) - 1; $i < $len; $i++) {
            $str .= $chars[mt_rand(0, $lc)];
        }
        return $str;
}
function testing_single($str,$i=0,$len = 6){
	//这里查询了数据库 是否有重复 数据 
	$ret = db('user')->where(['invitation'=>$str])->find();
	if (!$ret) {
		return $str;
	}else{
		$i +=1;
		if ($i<10) {
			$str = set_invitation();
			$return_str = testing_single($str,$i);
			return $return_str;
		}else{
			$str = set_invitation($len+1);
			$return_str = testing_single($str,$i,$len+1);
			return $return_str;
		}
	}
}

对了 要注意 数据库中 给 邀请码字段 加索引 方便快速查询

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wise man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值