Twitt
@Twitt

Как запретить слать запросы, если нажали на определенную кнопку в течение какого то времени?

Есть кнопка, по нажатию на которую происходит выгрузка и идет большая нагрузка на базу. Если нажать 10 раз подряд, то будет очередь таких запросов. Как сделать так, чтобы остальные 9 раз не считались, и выполнялся только первый запрос?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Судя по тому, как вопрос сформулирован - то есть без понимания того, как работает веб-сайт, то самое простое решение - это тупо заблокировать кнопку.

Нормальным же решением будет использование очереди.
Нажатие на кнопку помещает задачу в очередь, причем сначала проверяет - есть ли такое задание. Если есть - возвращает ошибку, "задание уже выполняется".
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Я бы заблокировал кнопку. Вариант 2 на нгинксе настроить кэш на этот запрос на 10 сек. Вариант 3 использовать редис и кэшировать на теже 10 сек
Ответ написан
catdesign
@catdesign
Веб-разработчик
Я так понял это где-то на сайте. Есть очень простой вариант. Вам может подойти, если нет желания изучать как юзать очереди.

<button class='button' onclick="hideButton(this)">Кнопка</button>

<script>
   function hideButton(button) {
       $(button).remove(); // Удалить кнопку, но можете с ней делать что угодно
   }
</script>
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы