Deverías usar sesiones .. pero no el clásico soporte de PHP Por defecto que sólo puede definir de forma NO controlada tiempos de expiración para sesiones ni menos consultar que tanto tiempo le queda a una sesión concreta en curso.
Podrías usar para este soporte avanzado de sesiones (en general .. luego tu tendrías que desarrollar esos detalles de tus "contadores" y demás ..) el soporte de sesiones de AdoDB:
http://phplens.com/lens/adodb/docs-session.htm
Esa classe gestiona las sesiones en BBDD y re-escribe en cierta manera la forma de trabajar de las sesiones clásicas de PHP para aportar esas funcionalidades.
Existen sistemas tal vez menos complejos .. seguro que los encuentras en sitios como:
www.phpclasses.org
Un saludo,