Лучший способ отслеживать задачи / цели, выполненные участником? - PullRequest
0 голосов
/ 02 августа 2010

Это вопрос, не зависящий от приложения, но я бы хотел получить лучший ответ.

Какова наилучшая настройка для отслеживания пользователей, выполняющих задачи или цели? Подумайте так же, как Stack Overflow, где, если вы попадаете в определенную цель, вы получаете значок.

В настоящее время я являюсь разработчиком веб-сайта и прилагаю приложение Facebook. Я хочу знать лучший способ отследить выполненные задачи. В настоящее время у меня есть единственная строка кода, обросшая фактическим кодом контроллера, что, вероятно, не лучший способ. Примерно так:

if ($upload_photo == true) {
    $challenge->perform(1);
}

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

member_id INT
challenge_id INT

И чтобы узнать, сколько раз участник выполнял конкретную задачу, я просто запускаю запрос COUNT (*) AS count FROM table_name WHERE member_id = ? AND challenge_id = ?.

Но это лучшая установка? Я думаю, что нет, и открыт для ответов о том, как улучшить эту настройку.

Как уже упоминалось, я также отвечаю за разработку приложения для Facebook, связанного с этим сайтом. Будет индикатор выполнения, который позволит пользователям выполнять определенные действия и получать за них вознаграждение. Например, закладки приложения; нравится приложение; и предложить приложение своим друзьям на Facebook.

Используя PHP SDK Facebook, я могу запросить, были ли выполнены эти действия. Нет проблем там. Моя проблема возникает для пользователей, которые покинут приложение, а затем вернутся позже, когда истечет время сеанса. Когда действие было выполнено, должен ли я сохранить это как запись в таблице базы данных и просто запросить базу данных, когда пользователь входит в приложение? Или я должен просто проверить вход в систему и сохранить результаты в сеансе, перезаписывая соответствующие ключи сеанса, когда они запускают соответствующее действие?

Любые предложения по улучшению этой установки будут приветствоваться. Заранее спасибо.

1 Ответ

1 голос
/ 02 августа 2010

Вы ищете советы о том, как хранить цели в базе данных?Если это так, то проверенные отношения «многие ко многим» кажутся подходящими в вашей ситуации.

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

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

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