Hola G12.
Coincido mas o menos con ferdy.
No obstante me gustaria hacerte una observación (critica constructiva).
Nunca anides consultas SQL. Cuando apenas hay datos en la BD pues nos e nota, pero el coste es demasiado exponencial.
Suponeniendo que tengas 500 usuarios, con tu codigo (la parte de los usuarios online):
$consulta = mysql_query("SELECT * FROM usuarios");
$tiempo_actual = time();
while($respuesta = mysql_fetch_object($consulta)){
$tiempo_actual = time();
if($respuesta->tiempoc >= $tiempo_actual){
mysql_query("UPDATE usuarios SET conectado = 'si' WHERE usuario = '".$respuesta->usuario."'");
}else{
mysql_query("UPDATE usuarios SET conectado = 'no' WHERE usuario = '".$respuesta->usuario."'");
}
}
Para cada página que visita cada usuario, lanzarías 501 consultas a la BD (1 select y 500 updates).
Hay otras optimizaciones mas finas, que no afectan tanto pero yo personalmente tambien lo hago.
El campo conectado ¿porque es un varchar? A Mysql le cuesta mucho menos comparar con 0 y 1 (true, false). Si tienes pocas filas no importa demasiado, pero al programador le cuesta lo mismo hacerlo de una forma u otra.
Para este caso concreto, si quisieras hacerlo asi, aunque ami me gsuta mucho mas la forma de ferdy, luego de arrelgar lo del tiempod e conexion, jugaria con ese campo y haria un update condicionado por el tiempo de conexion para poner un 1 en el campo conectado, y otro updtae para poner el cero, y esas consultas fuera del bucle.
Asi se pasa de 501 querys a 3.
Saludos