Busca información sobre
session_set_save_handler.
Configurado correctamente cumple con lo que quieres hacer sin necesidad de crear un cron.
En la misma base de datos guarda el time de inicio de la sessión, y el script, en cada petición, comprueba el tiempo de las sesiones, y la que no cumple, elimina la session de la DB y pone el estado en "no" aunque el usuario salga sin cerrar correctamente.
Saludos,