ManaPHP\Security\RateLimiter\Adapter\Db::_limit PHP Метод

_limit() защищенный Метод

protected _limit ( string $id, string $resource, integer $duration, integer $times ) : boolean
$id string
$resource string
$duration integer
$times integer
Результат boolean
    protected function _limit($id, $resource, $duration, $times)
    {
        /**
         * @var \ManaPHP\Security\RateLimiter\Adapter\Db\Model $model
         * @var \ManaPHP\Security\RateLimiter\Adapter\Db\Model $rateLimiter
         */
        $model = new $this->_model();
        $rateLimiter = $model::findFirst(['hash' => md5($id . $resource)]);
        if (!$rateLimiter) {
            $rateLimiter = new $this->_model();
            $rateLimiter->hash = md5($id . $resource);
            $rateLimiter->id = $id;
            $rateLimiter->resource = $resource;
            $rateLimiter->expired_time = time() + $duration;
            $rateLimiter->times = 1;
        } else {
            if (time() > $rateLimiter->expired_time) {
                $rateLimiter->expired_time = time() + $duration;
                $rateLimiter->times = 1;
            } else {
                $rateLimiter->times++;
            }
        }
        $rateLimiter->save();
        return $rateLimiter->times <= $times;
    }