Одним из вариантов является написание функции, которая рассчитывает рейтинг пользователя на основе всех других оценок и возвращает его.Затем, вызывая его, когда пользователь хочет увидеть свое звание.
Насколько я знаю, в MMORPG-играх (например) есть поле rank
в их БД для каждого игрока, и они используют ежедневно или ежечасно.cron-job для обновления этого ранга.Поэтому вместо того, чтобы запускать функцию «рассчитать ранг» каждый раз, когда игрок просто хочет увидеть свой ранг, вам просто нужно получить значение поля.
РЕДАКТИРОВАТЬ: код функции (не забудьте добавить поле rank
в таблицу БД)
Файл:
cronjob_update_rank.php:
require 'config.php'; //Or whatever contains your config and DB connection.
$rank = 1; //The best player ranked as 1
$getMembers = mysql_query("SELECT id FROM members ORDER BY `score` DESC");
while($mem = mysql_fetch_array($getMembers))
{
mysql_query("UPDATE members SET rank='$rank' WHERE id='{$mem['id']}'");
$rank++;
}
Обратите внимание, это всего лишь пример кода, вам нужно будет настроить его под свои нужды.
Используйте серверную панель для создания ежедневного cronjob для этого файла.(или обратитесь за поддержкой к вашему хостинг-провайдеру).