@itscoldhell

Как сделать ежедневный бонус на PHP Mysql JS?

Занимаюсь созданием сайта, я новичок в разработке функционала.
Стал вопрос с созданием ежедневного бонуса для пользователей.
Искал в интернете но не смог найти более подробный код реализации бонуса.

Если кому не сложно кто может помочь написать примерный код как работает ежедневный бонус для пользователей.

Сайт пишется на Vuejs Laraval php musql
  • Вопрос задан
  • 331 просмотр
Пригласить эксперта
Ответы на вопрос 4
@object_Object
Писать код не стану, но опишу как реализовывал лично я. В бд к пользователю приставлял еще одну колонку (bonusTime). При регистрации ставится time() в эту колонку. Затем просто при отображении страницы скрипт проверяет прошло ли 86400 секунд. (24 часа) и если да то дает забрать бонус. При получении бонуса колонка bonusTime снова устанавливается на time().
Ответ написан
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Раз в сутки, например в полночь запускается Laravel Task Scheduler который добавляет бонус в зависимости от прописанных условий
Ответ написан
Комментировать
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Пишете в базу дату последней выдачи, при заходе юзера считаете сколько бонусов должно было накапать, добавляете к бонусам, пишете текущую дату в базу.
Ответ написан
Комментировать
@oleg_ods
Можно ещё хранить в базе дату регистрации и считать кол-во полных дней, которые зарегистрирован пользователь.

Бонусы = (кол-во полных дней) * (кол-во бонусов за день);

Если за бонусы можно что-то получать, что было бы логично, завести таблицу потраченных бонусов.

Соответственно формула текущих бонусов приобретает вид:

Бонусы = (кол-во полных дней) * (кол-во бонусов за день) - (сумма потраченных бонусов);

Это для ситуации когда бонусы начисляются вне зависимости от активности пользователя.

P.S. Любое использование cron или аналогов будет создавать большую нагрузку на БД в момент пересчета бонусов при росте кол-ва пользователей. Хотя, если кол-во считываний бонусов превышает кол-во начислений и этот вариант имеет право на жизнь.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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