2010-11-01 18 views
15

No estoy seguro de cuál sería la forma más fácil de hacer esto. Necesito poder detectar qué usuarios están en línea en mi sitio web. Entonces, cuando las personas vean un hilo o algo, dirá al lado del nombre del usuario si están EN LÍNEA o FUERA DE LÍNEA. Y en la parte inferior del índice del foro, indicará todos los usuarios que están en línea.¿Detecta usuarios en línea?

¿Cuál sería el enfoque más fácil para hacer algo como esto? No estoy seguro de si necesitaré un Javascript que se ejecutará cada vez que se cargue una página o qué.

Gracias :)

+3

No utilice Javascript para esto. – drudge

+0

¿Qué foro y versión estás usando? Si algo pre-hecho como IBP/InvisionFree, o PHPBB, etc., entonces esta funcionalidad generalmente ya existe en el panel de control de su foro. –

+3

Personalizo la codificación de mi propio foro. :) – Cory

Respuesta

20
  • tener una base de datos MySQL con una tabla de usuario
  • tener una columna en esa tabla de usuario que ahorra el "visto por última vez" -tiempo actualización
  • esa columna en cada petición
  • en la comprobación de línea o fuera de línea, comprobar si el tiempo actual menos "visto por última vez" -tiempo es mayor que algún umbral te gusta

Editar: Opcionalmente, puede hacer que un javascript "ping" en el servidor (solicite una página vacía) cada dos minutos o más si desea que las personas que están inactivas con su sitio web abierto también se muestren en línea.

+1

Sí, este es probablemente el mejor enfoque – Breezer

+0

Exactamente lo que estaba pensando. Como iba a tener una última vez vista. Y configurado en línea para ser visto por última vez en 5 minutos más o menos. Sin embargo, no sabía si ese era el mejor enfoque. – Cory

+0

¿Cuándo crees que la última columna vista debería actualizarse? Cada carga de página? – Cory

1

Debe tener algún tipo de tabla de "sesión", donde retenga al usuario y la hora en que visitó la página.

Si el tiempo es anterior a 5 minutos, el usuario está desconectado (y la fila se puede eliminar). Los otros usuarios en la tabla de sesión están "en línea".

Cuestiones relacionadas