Как обрабатывать достижения / значки / награды для вашего приложения с минимальным попаданием в систему?

Мне нравится концепция значков и достижений для веб-сайта, который я создаю. Было доказано, что они улучшают использование / коэффициент использования, и я думаю, что они могут стать большим мотиватором для приложения, которое я хотел бы разработать.

На высоком уровне я могу придумать 3 способа сделать это.

Проверьте участников, которые соответствуют требованиям для работы cron: это не кажется мне хорошей идеей, поскольку количество участников растет, работа cron будет занимать все больше и больше времени.

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

Каждый раз, когда пользователь выполняет действие, которое может получить значки, проверьте, есть ли они у них, а затем проверьте, соответствуют ли они требованиям: Это тоже кажется нормальным, но если я сохраняю пользователя в качестве объекта кажется, что он может стать слишком большим, или что я могу в конечном итоге довольно жестко проверять наличие достижений в базе данных.

Есть ли какие-то варианты, которые мне не хватает? Мои опасения по поводу одного или нескольких подходов преувеличены?

Изменить: это гораздо менее интересный вопрос, чем я думал, или я задал не вовремя? Я что-то неясно оставил?


person Chris Sobolewski    schedule 15.02.2011    source источник
comment
Это большой вопрос. Мне самому действительно интересно узнать об этой теме. Я бы хотел реализовать что-то очень похожее на систему значков StackOverflow на сайте, который я помогаю создавать.   -  person Matthew Brown aka Lord Matt    schedule 30.12.2015


Ответы (1)


Или объедините две свои идеи:

Каждый раз, когда пользователь выполняет действие, которое может получить значок, поместите пользователя в список (если его еще не было) и часто обрабатывайте этот список с помощью cron.

Таким образом, вам не нужно проверять каждый раз, когда пользователь завершает действие, и вы можете поддерживать работу cron в разумных пределах.

Конечно, есть варианты: например, обработка списка по достижении определенного количества. Или частично проверьте требования перед добавлением пользователя в список.

Я полагаю, это будет зависеть от количества пользователей, доступных действий, которые можно выполнить, и т. Д.

person Veger    schedule 15.02.2011
comment
@ChrisSobolewski, вы использовали это решение? Как пользователи могут заметить, что они автоматически получили определенный значок? (то есть, если для cron установлен какой-то большой интервал, они заметят некоторую задержку). - person jonathancardoso; 23.02.2014