Home > Backend Development > PHP Tutorial > 每天laravel-20160624|RateLimiter

每天laravel-20160624|RateLimiter

WBOY
Release: 2016-06-20 12:32:54
Original
1211 people have browsed it

<?phpnamespace Illuminate\Cache;use Illuminate\Contracts\Cache\Repository as Cache;// declare namespaceclass RateLimiter{// RateLimiter    /**     * The cache store implementation.     *     * @var \Illuminate\Contracts\Cache\Repository     */    protected $cache;// a interface instance    /**     * Create a new rate limiter instance.     *     * @param  \Illuminate\Contracts\Cache\Repository  $cache     * @return void     */    public function __construct(Cache $cache)    {        $this->cache = $cache;    }// a big set to init a class, instance about cache.    /**     * Determine if the given key has been "accessed" too many times.     * Determine whether to add many times     * @param  string  $key     * @param  int  $maxAttempts     * @param  int  $decayMinutes     * @return bool     */    public function tooManyAttempts($key, $maxAttempts, $decayMinutes = 1)// increment too Many Attempts    {        if ($this->cache->has($key.':lockout')) {            return true;        }// check lockout,        if ($this->attempts($key) > $maxAttempts) {            $this->cache->add($key.':lockout', time() + ($decayMinutes * 60), $decayMinutes);            return true;        }// to change the access weight        return false;    }// done is to back true, or back false    /**     * Increment the counter for a given key for a given decay time.     *     * @param  string  $key     * @param  int  $decayMinutes     * @return int     */    public function hit($key, $decayMinutes = 1)    {        $this->cache->add($key, 1, $decayMinutes);        return (int) $this->cache->increment($key);    }// to add a increment time, increment   // this is hit function to change time    /**     * Get the number of attempts for the given key.     *     * @param  string  $key     * @return mixed     */    public function attempts($key)    {        return $this->cache->get($key, 0);    }// get value by key    /**     * Get the number of retries left for the given key.     *     * @param  string  $key     * @param  int  $maxAttempts     * @return int     */    public function retriesLeft($key, $maxAttempts)    {        $attempts = $this->attempts($key);// try to get value        return $attempts === 0 ? $maxAttempts : $maxAttempts - $attempts + 1;    }// a retirsleft ,a left times    /**     * Clear the hits and lockout for the given key.     *     * @param  string  $key     * @return void     */    public function clear($key)    {        $this->cache->forget($key);        $this->cache->forget($key.':lockout');    }// clear the hit and forget key and forget an shadow key,that is $key.:lockout    /**     * Get the number of seconds until the "key" is accessible again.     *     * @param  string  $key     * @return int     */    public function availableIn($key)    {        return $this->cache->get($key.':lockout') - time();    }// has the time back, get the can be used times}
Copy after login


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template