Hola,
hacer una consulta cada 10 segundos te generaría una cantidad de datos monumental, difícil de utilizar y, seguramente, te causaría problemas con el proveedor del servicio o si lo administras tú mismo.
Creo que lo mejor es hacer una tabla que se llame, por ejemplo,
acceso_usuarios, con campos más o menos así:
- id: índice primario
- id_usuario: índice que relaciona con la tabla de usuarios
- evento: set con valores "entrada", "salida" (puede ser un enum, si eres muy quisquilloso con las implementaciones)
- fecha: datetime con el instante preciso en que sucede la acción
así cada que un usuario entra o sale de tu sistema puedes guardar el evento en base de datos.
¿Qué pasa cuando un usuario no cierra sesión, sino que cierra el sistema y la sesión se destruye (tal vez sea el origen de tu idea de hacerlo por tiempo)? Tú puedes definir lo que hace cada evento de las sesiones con
session_set_save_handler. Requiere un poco de tiempo, pero aquí tienes control total sobre las sesiones.
saludos