Ver Mensaje Individual
  #13 (permalink)  
Antiguo 14/12/2012, 05:38
Avatar de Malenko
Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: Gestionar el estado de los usuarios

Cita:
Iniciado por Nemutagk Ver Mensaje
Personalmente no soy partidario de estar enviando cada X minutos una petición, y mas si la aplicación tiene potencial de tener muchos usuarios ya que podría llegar un momento en que se puede saturar y se pueda alentar, en fin, es una opinion, sigo pensando en que es mejor "analizar" la conducta del usuario, checar cada vez que el usuario haga una petición, ya sea para solo ver, o hacer algún cambio en el juego, y de hay ver cuanto tiempo pasa entre una acción y otra, así te puedes apoyar en los demás usuarios en la partida para calcular los tiempos, pero como siempre es una opinión y una opción mas
Lo de poner "x minutos" era porque si ponia segundos iba a parecer que era algo a consultar de forma continua. Obviamente el tiempo para hacer esta comprovación depende de la carga de usuarios que pueda tener su aplicación. Si realmente quiere saber los usuarios online, sin necesidad de desconectarlos, la única forma es realizando un "ping" cada cierto intervalo.


Cita:
Iniciado por roncco Ver Mensaje
Tú perdona, pero soy el típo más burro del universo y sólo te he entendido a medias.

Se trataría -creo entender- de llamar a una función php a través de un timer (no he usado nunca prototype, sino jquery) como setinterval. Esa función puede tener un parámetro que se correspondería con la id del usuario. Si la función no tiene éxito supongo que devolverá false y entonces puedo desconectar al usuario. No sé si esta es la teoría o estoy diciendo una colección enorme de sandeces.

Lo que no he entendido es qué consulta puede hacer la función para saber si un usuario con una id determinada está o no en la web. Tú perdona que sea tan corto, mi cerebro no da para más.

Gracias por la paciencia.
El funcionamiento lo has pillado perfectamente. JQuery te sirve porque tiene la misma funcionalidad. Ahora entrando a la pregunta, usaremos un ejemplo porque se entenderá más facil.

Tienes a un usuario online en la página. Tal y como entra (creo que el evento Load de jquery o similar) haces el callback/ping inicial al servidor. Tu en el servidor recibirás el ID del usuario y registras en una tabla: el ID, la hora del ping, la hora del proximo ping. La hora del proximo ping la puedes saber facil: hora del ping recibido + tiempo de intervalo entre pings (una hora por ejemplo). Pongamos que las columnas de la tabla se llaman: usuario, hora_inicio, hora_fin.

Ahora bien, quieres saber que usuarios estan ahora mismo en linea. Como lo harias? Te lo pongo en t-sql, quizas en mysql getdate tenga otro nombre:

Código PHP:
select usuario
from 
[tabla]
where hora_inicio<=getdate() and getadate()<=hora_fin 
__________________
Aviso: No se resuelven dudas por MP!