Spear
почемучка
Такой себе вопросец: обновление и сбор некоторой инфы с последующей обработкой в тако
Здравствуйте,
у меня появился такой (скорее теоритический вопрос):
на сайте будет система поощрения "активных пользователей" различными бонусами.
Для этого будут введены некие подобия "уровня пользователя", которые нужно повышать при определенных действиях, но не сразу.
Поясню.
Есть определенный набор действий, за которые пользователь будет "прокачивать" себя на сайте - при регистрации у него будет 0 очков активности. 10000 очков активности будут равны увеличению уровня на 1 балл (100,00 очков = 100%.)
Но это все пока что наброски.
Проблема заключается в следующем:
очень важно скрыть от пользователей информацию о том, за какие действия у них будут прибавляться очки. Конечно я понимаю, что со временем (путем проб и эксперементов) самые дотошные пользователи вычислят некоторые способы увеличения счетчика, но это уже другой вопрос.
Задача в том, что бы не обновлять счетчик "вживую"... а, например, раз в сутки. Но для этого нужно кронтаб, а я хотел бы сделать все средствами РНР.
Пока что идея такая:
например, за действие АА пользователь получает 5 очков.
Схема:
1. сначала выполняет действие
2. идет проверка и, в случае успеха, повышение счетчика на 5 очков путем обновления в таблице usersTEMPpoints поля POINTS для текущего пользователя.
3. тем временем, при каждом запросе в базу в таблицу userREALpoints (настоящие очки пользователя) в поле last_update, проверяется дата последнего апдейта. Если она меньше сегодняшнего числа, то идет обновление счетчика,
с удалением записи по текущему пользователю ихтаблицы userTEMPpoints.
Вроде тут все.
Ещё хотел узнать - как думаете, хранить в базе только полностью значение points (10000) и по нему считать уровень пользователя и выводить ему на экран,
или вести два поля "Level" и "points". Первое - уровень (подсчитываемый способом выше раз в сутки), второе - на всякий случай очки пользователя?
Или уровень впринципе не нужен?
И последний вопрос в первом после (очень интересный для меня)
как из числа 6544 получить число 65 (65,40)? (нужно для округления текущего индикатора прокачанности пользователя в процнтах для текущего уровня),
и из 65,68 - 66 (65,70)
из 6546 - 65 (65,50)
То есть - как округлять в РНР уже как бы целые числа? или просто отделять последние 2 знака запятой, а потом ROUND?
Здравствуйте,
у меня появился такой (скорее теоритический вопрос):
на сайте будет система поощрения "активных пользователей" различными бонусами.
Для этого будут введены некие подобия "уровня пользователя", которые нужно повышать при определенных действиях, но не сразу.
Поясню.
Есть определенный набор действий, за которые пользователь будет "прокачивать" себя на сайте - при регистрации у него будет 0 очков активности. 10000 очков активности будут равны увеличению уровня на 1 балл (100,00 очков = 100%.)
Но это все пока что наброски.
Проблема заключается в следующем:
очень важно скрыть от пользователей информацию о том, за какие действия у них будут прибавляться очки. Конечно я понимаю, что со временем (путем проб и эксперементов) самые дотошные пользователи вычислят некоторые способы увеличения счетчика, но это уже другой вопрос.
Задача в том, что бы не обновлять счетчик "вживую"... а, например, раз в сутки. Но для этого нужно кронтаб, а я хотел бы сделать все средствами РНР.
Пока что идея такая:
например, за действие АА пользователь получает 5 очков.
Схема:
1. сначала выполняет действие
2. идет проверка и, в случае успеха, повышение счетчика на 5 очков путем обновления в таблице usersTEMPpoints поля POINTS для текущего пользователя.
3. тем временем, при каждом запросе в базу в таблицу userREALpoints (настоящие очки пользователя) в поле last_update, проверяется дата последнего апдейта. Если она меньше сегодняшнего числа, то идет обновление счетчика,
с удалением записи по текущему пользователю ихтаблицы userTEMPpoints.
Вроде тут все.
Ещё хотел узнать - как думаете, хранить в базе только полностью значение points (10000) и по нему считать уровень пользователя и выводить ему на экран,
или вести два поля "Level" и "points". Первое - уровень (подсчитываемый способом выше раз в сутки), второе - на всякий случай очки пользователя?
Или уровень впринципе не нужен?
И последний вопрос в первом после (очень интересный для меня)
как из числа 6544 получить число 65 (65,40)? (нужно для округления текущего индикатора прокачанности пользователя в процнтах для текущего уровня),
и из 65,68 - 66 (65,70)
из 6546 - 65 (65,50)
То есть - как округлять в РНР уже как бы целые числа? или просто отделять последние 2 знака запятой, а потом ROUND?
(не считая отдельное поле левел. я вот подумал и сам не понял зачем оно вообще