Система успеха как здесь на stackoverflow в php? [закрытый]

8
задан Danubian Sailor 8 August 2014 в 12:52
поделиться

2 ответа

Вы можете задать аналогичный вопрос по мета , чтобы узнать, готов ли Джефф поделиться любой из его уроков, извлеченных на этой арене. Если да, то вопрос должен быть конкретно о подходе SO к проблеме. Этот вопрос, однако, является вполне допустимым для этого сайта (поскольку он спрашивает о создании нового проекта, вдохновленного тем, что было сделано на SO).

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

1
ответ дан 5 December 2019 в 09:24
поделиться

У вас есть два варианты, и, скорее всего, вы можете комбинировать их:

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

Например, StackOverflow реализует это для значка «Хороший ответ». Каждый раз, когда он запускается, он проверяет, сколько у вас ответов с +10 голосами за, и видит, нужно ли вам наградить еще одним значком. (Он видит 5 сообщений с 10 голосами и 4 значка за хороший ответ, вы получаете значок). Джефф уже заявил, что это означает, что если вы получите ответ, за который проголосовали 10 человек, затем проголосовали против, а затем за другой пост набралось 10 голосов, вы не получите значок.

Второй вариант - это триггеры на основе событий. Что действительно просто:

$badgeSystem->giveBadge("Some Badge Name", $User_ID);

Это может быть использовано для событий, которые, как вы знаете, происходят. Как значок "Автобиограф". Скорее всего, пользователь не заполнит свой профиль, пока не будет нажата кнопка отправки, поэтому сайт может просто проверить, заполнил ли пользователь все, и, если да, и им все еще нужен значок, они его получают.

cron-job следует использовать для действий, которые постоянно проверяются. Такие вещи, как количественные цели, такие как посещение сайта в течение 150 дней или редактирование 500 раз.

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

(Вероятно, вы могли бы использовать любой почти в любой ситуации. Хотя триггер на основе событий дает более быструю обратную связь ..)

15
ответ дан 5 December 2019 в 09:24
поделиться
Другие вопросы по тегам:

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