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

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

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

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

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

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

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

Редактировать: Это гораздо менее интересный вопрос, чем я думал, или я задал вопрос в неподходящее время?Я что-то оставил неясным?

1 Ответ

4 голосов
/ 16 февраля 2011

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

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

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

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

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

...