szQocks
@szQocks

Отслеживание таблицы в бд?

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

То есть я через админку создаю аукцион, который например должен начаться через 24 часа. Люди которые заходят на сайт видят инфу о том что вот есть такой то такой то аукцион, и когда он стартанёт ( счётчик до старта аукциона ).

Вопрос в том - как этот аукцион запустить ? При создании аукциона, создаётся просто запись в таблице которая отвечает за создание аукционов, то есть например минимальные данные об аукционе и дата старта.

Для решения это проблемы, у меня голове крутилось 2 варианта:
1 - крон который запускает файл на бэкенде каждые 1 или 2 секунды , сам же этот файл - делает подключение к бд, и смотрит таблицу и сверяет даты у каждой записи, если аукцион может быть создан, создаёт в основной таблице с аукционами запись об аукционе ( который уже то есть работает и с ним пользователи могут взаимодействовать )

2 - просто запустить отдельный сервер, который на бэке через просто интервал делает тоже самое что и в первом варианте

Оба варианта для меня сомнительны, мне кажется что я возможно делаю что-то неправильно или что-то упускаю. Хотелось бы узнать, как было бы лучше для данной ситуации ?

P.S так же я знаю что можно крон какой-то запустить на уровне вообще базы данных, но этот вариант не особо отличается от первых двух, плюс к тому же из инета вычитал что лучше на уровне бд не делать каких-то кронов и т.д.
Так же таблицы которые описаны в вопросе, они примерные, скорее всего будут чуть другие.
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что мешает сразу создавать запись аукциона с указанием времени его проведения и при запросах сравнивать его с текущим временем? И не надо плодить лишних таблиц и задач.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
через крон - вполне нормальное решение. Только:
1) стандартный крон запускается не чаще раза в минуту, а не секунду
2) замерьте, сколько времени занимает запуск аукциона, чтобы не было наложения.

Решение проблемы второго пункта - очереди сообщений ( RabbitMQ и прочие варианты). У Вас висит воркер, который мониторит некоторую очередь непрерывно. А в кроне стоит скрипт-публикатор , который проверяет, какие аукционы надо запустить, публикует в очередь задание по запуску каждого аукциона, а у самого аукциона помечает, что задание поставлено.
Таким образом, неважно, сколько времени занимает старт одного аукциона, к тому же воркеров может быть несколько. А публикация задания - существенно более простая задача, делается за секунду.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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