Hace unos dias creé un sistema de top de usuarios, en la cual inserto la lista de usuarios y el numero de pocision de cada uno en una tabla llamada "ranking" en la que solo tiene esos 2 campos: nick | posicion
La posicion la obtengo de una enumeración $n++; ingresando el usuario con un insert y la pocision con un update.
Pero resulta que esta operacion para actualizar las posiciones del ranking me dejó muy lenta la pagina al cargar, si retiro el codigo de actualizacion de posicion demora 3 segundos en cargar la lista completa de usuarios (pero no se acutalizaran las posiciones).. Si inserto el codigo de actualizacion de posicion demora 40 a 50 segundos la carga de la pagina.
Este es el codigo completo, desde la consulta hasta el cierre con el inser y update:
Código PHP:
<?php
include('conexion.php') ;
$n=1;
$sql = "SELECT nick, COUNT(*) AS cantidad FROM
(select nick from audio union all
select nick from video union all
select nick from imagen union all
select nick from otros) A GROUP BY nick order by cantidad desc";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
?>
<? echo $n; ?> <? echo $row[nick]; ?> <? echo $row[cantidad]; ?>
<?
$posicion = $n;
$n++;
mysql_query("INSERT INTO ranking (nick) VALUES ('$row[nick]')");
$query = "UPDATE ranking SET posicion = '$posicion' WHERE nick = '$row[nick]'";
mysql_query($query);
} ?>
Pero si cierro la llave sin actualizar los datos en la db carga en 3 segundos, es decir, cerrar asi:
Código PHP:
<?
$n++;
}
?>
Cita:
Gracias de antemano Obviamente la posicion en la lista es automatica por la enumeracion, pero tengo que tenerla en base de datos para visualizar la posición en el perfil del usuario.