El metodo que puedes utilizar es el siguiente.
Una tabla con los siguientes datos
id | ip | ultima_visita | registrado |
id : tiene que index y autoincrementable
ip : varchar
ultima_visita : int ( va a ser un timestamp)
registrado : int ( 0 si es visita, 1 si esta registrado)
Entonces el algoritmo en pseucodigo seria :
En cada Ejecucion del Script
1.- Limpiamos la Tabla ( es decir, borrar todos los registros que cumpla la condicion hora actual - 2 minutos ).
Código:
$hora_local=time();
$sql="DELETE from `estadistica` WHERE hora<".($hora_local-2592000)."";
2.- Consultamos si Existe algun Registro con la IP del Visitante, Si existe la IP , Actualizamos la ultima_visita con la $hora_actual , si no existe, agregamos un nuevo registros donde guardamos la ip, la hora y si esta registrado (lo puedes saber por la cookie).
Entonces simplemente para consultar, cuantos usuarios estan contectados,
Tiene ques realizar un count con la condicion ( usuarios registrados registrado = 1, visitantes registrado = 0 , y el total la suma de los 2) (ve la funcion COUNT de Mysql).
Saludos