Edición de 2017: En estos días, su mejor apuesta es usar websockets para rastrear la presencia en una página/sitio.
No puede detectar cuándo un usuario cierra su navegador o navega fuera de su sitio con PHP, y las técnicas de JavaScript para hacerlo están tan lejos de garantizarse que son inútiles.
En cambio, lo más probable es que su mejor opción almacene el último tiempo de actividad de cada usuario.
- Cree una columna en su tabla de usuarios a lo largo de las líneas de 'última_actividad'.
- Cada vez que un usuario carga una página, actualice su última actividad a la hora actual.
- Para obtener una lista de quién está en línea, simplemente consulta la base de datos para encontrar usuarios con valores de última actividad más recientes que 10/20/cualquiera que sean los minutos.