Heim >Backend-Entwicklung >PHP-Tutorial >每天laravel-20160624|RateLimiter

每天laravel-20160624|RateLimiter

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-20 12:32:541242Durchsuche

<?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}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn