El modelo tal y como lo describes en el primer post no es ni práctico ni funcional, pecisamente por la razón que describes. No es posible, desde la base de datos verificar lo que se realiza en la web, porque está más allá de sus recursos.
MySQL No se comunica con la web, exactamente, sino al revés: tu accedes a un server de base de datos desde la web. Por lo tanto, lo que hagas en la web afectará a la base si y sólo si el servidor de web es quien controla lo que hagan los usuarios de las diferentes páginas. MySQL sólo puede controlar lo que pasa internamente, o responder a consultas que recibe, pero no genera consultas por sí mismo hacia la web...
Dicho esto, surgen dos posibilidades de resolución:
1. La mejor de todas sería controlar esto desde el mismo site, de modo de detectar cuando un usuario se ha "caído", o no está interactuando con la web. Eso es un problema de programación, se maneja dándole
lifetime determinado a los objetos de sesión y lo deberás consultar con el
Foro de PHP. En esencia se trataría de que la capa de negocios de tu web controle la vigencia de las sesiones, y en caso de no estar activa envíe por si misma la orden de actualizar los registros de sesiones terminadas.
2. El segundo caso es un poco más exigente en bases de datos: Controlar con un evento o un proceso programado en el servidor si los usuarios están o no activos.
Existe una sentencia que te puede mostrar qué usuarios están activos:
Esta sentencia te devuelve una tabla que en la segunda columna pone los username activos en el momento. El problema esencial es:
a) Necesitas que los usuarios se logueen
contra el servidor de MySQL.
b) No puedes usar un usuario
genérico.
c) Deberás darle permisos al usuario para tener
una sola conexión activa al mismo tiempo.
d) El evento debe ser programado en el server MySQL, pero solamente puedes hacerlo con versiones de
MySQL 5.1 en adelante, las que cuentan con
CREATE EVENT, y la mayor parte de los host no tienen una versión superior a la 5.0.27.
e) Puedes, en vez del anterior, programar un evento
cron en el server del host, pero eso dependerá de los privilegios que te den en el hosting.
Estas son las únicas alternativas que se me ocurren.