redis并控制

并发控制  redis  


/**
 * 限制某个请求多少秒内,可以请求多少次
 * @param $key value
 * @param $expire 失效时间
 * @return $num 次数
 */
function request_limit($key, $expire, $num)
{
    $redis_get = fx_redis_service::I()->get($key);
    if (!$redis_get) {
        fx_redis_service::I()->incr($key);
        fx_redis_service::I()->expire($key, $expire);
    } else {
        $total = fx_redis_service::I()->incr($key);
        // 高并发的时候过期时间会变成-1,所以需要重置过期时间,否则这个IP永远不能请求
        $ttl = fx_redis_service::I()->ttl($key);
        if ($ttl < 1){
            fx_redis_service::I()->expire($key, $expire);
        }
        if (intval($total) > $num) {
            fx_log::logs2file(__FILE__, __FUNCTION__, $_GET, $_POST, $key . '请求太频繁..', '', fx_utl::hip(false));
            $json = json_encode(array('result' => 1, 'msg' => '请求太频繁'), JSON_UNESCAPED_UNICODE);
            echo $json;
            exit();
        }
    }
}

伯乐常用语法调用

php  伯乐  

伯乐phpMVC框架开发,常用语法使用.