w_b_x
@w_b_x

Как ограничить запросы в MySQL + PHP на единицу времени?

Доброго времени суток!

Как и на любом относительно функциональном проекте у нас есть запросы к БД (изменение пароля, выдача каких-либо данных, создание сообщений, изменение неких настроек и т.д)
К глобальным и серьёзным запросам, таким как авторизация и регистрация мы можем поставить капчу, но ставить её везде где есть хоть какой-то запрос к БД кажется совершенно ужасным решением. Я хотел бы ограничить возможность запросов к БД для человека (по ip, имени пользователя или чему бы то ни было) например чтобы человек не мог обновлять информацию на странице (через Ajax + php + mysql) чаще 1 раза в 2 секунды...

Есть ли какие-то простые решения без хранения отдельной таблицы с данными о том кто, что и когда делал?
  • Вопрос задан
  • 771 просмотр
Пригласить эксперта
Ответы на вопрос 3
unitby
@unitby
сессии юзай. в ней запоминай время последнего запроса в базу
Ответ написан
Комментировать
@mihelsonkk
nginx, mysql, unix
Может на уровне веб сервера решать вопрос?
например, если у вас nginx то это может вам помочь
nginx.org/ru/docs/http/ngx_http_limit_req_module.html

upd
база данных - сервит данные.
приложение - сервит динамику.
веб сервер - сервит коннекты.

у вас задача - НЕ на уровне приложения или данных, а на уровне коннектов. конечно, можно ее решить на уровне приложения через куки/сессии/еще какие то костыли, но неправильно что логика приложения зависит от такого показателя как кол-во запросов в секунду. правильнее с точки зрения архитектуры решать на сервере.
Ответ написан
Комментировать
dima9595
@dima9595
Junior PHP
Юзай например куки. При запросе увеличивай куки на +1. Если будет больше определённого значения, то пиши, мол блокировка и юзер больше не может что либо делать. И т.п.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы