您的位置:首页 > 数据库 > Memcache

使用memcache或redis限制某个用户或者某ip用户一段时间内最大投票次数

2016-05-19 00:48 756 查看
实现每个用户在某网站10分钟内最多投票5次

function isFrequently($key){
$t = 60*10;
$n = 5;
$mem = new Memcache();
$mem->connect('127.0.0.1','11211');
if(!$mem){
echo 'memcache连接失败!';
exit;
}
$val = unserialize($mem->get($key));
$val = $val ? $val : array();

//    if(count($val) >= 5 && time()-$val[0]<$t){
//        echo '10分钟之内最多投票5次';
//    }else{
//        if(count($val) > 1){
//            array_shift($val);
//        }
//        $val[] = time();
//        $mem->set($key,serialize($val),0,$t);
//        echo '投票成功!';
//    }

if(count($val) < 5 || $b = array_shift($val)<time()-$t){
$val[] = time();
$mem->set($key,serialize($val),0,$t);
echo '投票成功!';
}else{
echo '10分钟之内最多投票5次';
}
}


  注:$b = array_shift($val)<time()-$t中运算符优先级是-高于<,<高于=。因此右边小于成立,$b=1,否则$b=0。

开始写的注释部分代码,后来进行优化,对||了解更加深入。 null与数字进行比较时候,默认为0。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: