Jump to content


Photo

Problema Muito Grande Em Sistema De Ranking


  • Faça o login para participar
Nenhuma resposta neste tópico

#1 srenda

srenda

    Novato no fórum

  • Usuários
  • 7 posts
  • Sexo:Não informado

Posted 12/05/2007, 03:06

Ola gente.
Estou com um grande problema.

Tenho um sistema de usuarios e preciso fazer uma função no meu codigo php, para atualizar os ranks de tantos em tantos minutos.

Vou dar um exemplo.

tabela usuarios

campos.


usuario_id | usuario_nome | usuario_rank | usuario_pontos | usuario_pontos_especiais |

O criterio para definir o rank de cada usuario será: quem tiver mais pontos (usuario_pontos), no caso de houver dois ou mais usuarios com o mesmo numero de pontos, tera uma melhor colocação aquele que tiver mais pontos especiais (usuario_pontos_especiais), ou seja, o criterio de desempate.

O meu problema é.

como atualizar os ranks.

Num primeiro momento parece simples, é so eu descobrir o rank de cada usuario individualmente e atualizar depois, seria mais ou menos isso:

obs: $user_info é o array que contem os valores do usuario em questão, correspondentes a tabela citada acima.

$consulta = ("SELECT COUNT(distinct  usuario_pontos) FROM usuarios WHERE  usuario_pontos > {$user_info['usuario_pontos']}");
list($rank_1) = mysql_fetch_array(mysql_query($consulta));

$consulta_2 =("SELECT COUNT( usuario_pontos) FROM usuarios WHERE usuario_pontos = {$user_info['usuario_pontos']} and usuario_pontos_especiais > {$user_info['usuario_pontos_especiais']}");
list($rank_2) = mysql_fetch_array(mysql_query($consulta_2));

$rank_usuario = ($rank_1 +$rank_2 + 1);


$atualiza_rank = mysql_query("UPDATE `usuarios` SET `usuario_rank` = '$rank_usuario' WHERE usuario_id = '{$user_info['usuario_id']}'");


pronto. o rank do usuario em questão foi atualizado.

Mas agora vem o problema. Se eu tiver 30000 usuarios. A cada vez que eu for atualizar o rank deles, vou ter que executar 90000 querys de 5 em 5 minutos por exemplo, apenas para atualizar os ranks ?? acho que não, creio que deve existir um meio mais pratico para min executar esse procedimento.

Preciso realmente muito de ajuda, quebrei a cabeça e pesquisei muito tambem, mas não encontrei nada, que pudesse me ajudar.
Se alguem conseguir me ajudar com isso, ficarei grandiosamente grato, isso ja me custou 2 dias de trabalho.

Muito obrigado.

Edição feita por: srenda, 12/05/2007, 03:08.





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq