Ограничитель скорости не срабатывает, когда это необходимо. Почему это не работает? - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно, чтобы мой ограничитель скорости сработал после того, как более 1000 запросов были отправлены в мою базу данных в течение 24 часов, однако это не работает. Я не знаю PHP достаточно хорошо, чтобы понять, что я сделал неправильно, может кто-нибудь мне помочь?

Это для API, над которым я работаю, и я знаю, как реализовать ограничитель скорости для предотвращения атак ботов. Я пытался увидеть, если это мой сеанс или нет, но я не могу понять, что не так.

это внутри класса php sessionControl

public function Rate24HourCheck() {
    $this->last_request = Array();
    array_push($this->last_request, time());
    $count = 0;
    foreach($this->last_request as $item) {
        $this->curr_request = time();
        $count ++;
        if($this->new_request > ($this->curr_request - 86400) && $count > 1000) {
            throw new Exception("24 hr rate limit exceeded.");
            die();
        }
    }
    if($this->new_request < ($this->curr_request - 86400)) {
        unset($this->last_request);
    }
    $this->last_request = time();
} 

Всякий раз, когда я пытаюсь вызвать ограничитель скорости, меняя его с 1000 на 5 или 10, я не получаю никакого ответа / ошибки, говорящего о превышении моего ограничителя скорости.

...