LINUX.ORG.RU

Можно ли через очередь Laravel заблокировать отправку частых событий?

 ,


0

1

Laravel 5.5, очередь на MySQL.

В интерфейсе сайта есть кнопка «Тестовое сообщение». Когда она нажимается, должно запускаться определенное Job-действие, которое помещается в очередь.

Проблема в том, что нужно разрешить отправлять тестовое сообщение не более раз в 10 минут. Однако, когда действие в очереди успешно выполнилось, оно бесследно исчезает из очереди. И никак невозможно проверить, была ли за последние 10 минут отправка сообщения или нет.

Вопрос: есть ли возможность в очереди Laravel отслеживать по таким критериям отправку сообщений? Или нужно просто заводить таблицу, в которой хранить последний момент помещения действия в очередь и сравнивать с ним?

★★★★★

А разве не проще хранить где-то в базе, например, время последнего нажатия на кнопку «Тестовое сообщение»? Если между текущим временем и временем нажатия на кнопку прошло более 10 минут, то давать возможность ее нажимать, иначе - блокировать.

P.s. а что такое «очередь на MySQL»? Базы данных ж не принято использовать для очередей.

dimuska139 ★★
()
Ответ на: комментарий от dimuska139

А разве не проще хранить где-то в базе, например, время последнего нажатия на кнопку «Тестовое сообщение»?

Я думал, что есть готовый функционал в реализации очереди на Laravel.


а что такое «очередь на MySQL»? Базы данных ж не принято использовать для очередей.

В Laravel сделана реализация очереди на разных технологиях, какую хочешь, такую и подключай. Есть на реляционной БД, есть на Redis, есть вроде Iron, Rabbit... Настраиваешь только подключение, а интерфейс на уровне PHP-классов сделан один и тот же.

Принято-не принято - все от проекта зависит. Мне некогда с Rabbit разбираться, а реализация на MySQL вполне сносная.

Xintrea ★★★★★
() автор топика

Это точно не надо делать на уровне очередей. Как вариант — хранить в сессии время последней попытки отправки в очередь. Разница текущего времени и предыдущего времени отправки меньше 10 минут, то не ставить в очередь, посетителю сайта выводить сообщение об ошибке.

dicos ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.