Usuario Activos

Hola alisal,
Mi consulta es como hago (con PHP) para saber la cantidad de usuarios activos que se encuentran visitando mi site.He visto que esto se puede hacer ASP pero con PHP no lo sé.
De antemano muchas gracias,
Saludos,
Alexis

3 respuestas

Respuesta
1
Por una vez ASP esta mejor preparado que PHP, esto pasa de 1 entre un millon; pero no hay problema, lo único que es más trabajoso.
Create una tabla en la base de datos de la siguiente manera:
CREATE TABLE control_ip (
Ip VARCHAR(15) NOT NULL,
fecha INT(14) UNSIGNED NOT NULL,
INDEX (ip)
);
Luego mediante un script controlaremos los movimientos de los usuarios por las páginas actualizando el registro de la base de datos si sigue navegando o borrándolo si no se muestra actividad en un determinado tiempo que tu establecerás.
En este script el tiempo limite es de 24 minutos.
<?
////////////////////////////////////////////
//USUARIOS ACTIVOS
//Calcula el numero de usuarios activos
////////////////////////////////////////////
function usuarios_activos()
{
//permitimos el uso de la variable portadora del numero ip en nuestra funcion
global $REMOTE_ADDR;
//asignamos un nombre memotecnico a la variable
$ip = $REMOTE_ADDR;
//definimos el momento actual
$ahora = time();
//conectamos a la base de datos
//Usa tus propios parametros!!
$conn = mysql_connect($host,$user,$password);
mysql_select_db($db,$conn);
//actualizamos la tabla
//borrando los registros de las ip inactivas (24 minutos)
$limite = $ahora-24*60;
$ssql = "delete from control_ip where fecha < ".$limite;
mysql_query($ssql);
//miramos si el ip del visitante existe en nuestra tabla
$ssql = "select ip, fecha from control_ip where ip = '$ip'";
$result = mysql_query($ssql);
//si existe actualizamos el campo fecha
if (mysql_num_rows($result) != 0) $ssql = "update control_ip set fecha = ".$ahora." where ip = '$ip'";
//si no existe insertamos el registro correspondiente a la nueva sesion
else $ssql = "insert into control_ip (ip, fecha) values ('$ip', $ahora)";
//ejecutamos la sentencia sql
mysql_query($ssql);
//calculamos el numero de sesiones
$ssql = "select ip from control_ip";
$result = mysql_query($ssql);
$usuarios = mysql_num_rows($result);
//liberamos memoria
mysql_free_result($result);
//devolvemos el resultado
return $usuarios;
}
?>
Espero que te sea útil y si tienes alguna duda no dudes en comentármelo.
Pablo.
Respuesta
1
Saber esto es viable, pero hay que elaborarlo un poquito.
Debes crear una tabla de usuarios activos: usuarios_act
Con los siguientes campos: IP fecha
En cada página de tu web (o al menos en las más importantes) debes añadir un script de php para guardar las IP's de los usuarios y la fecha del sistema de la siguiente manera:
Si la IP no existe se inserta un registro con dicha IP y la fecha del sistema
Si la IP existe, se actualiza la fecha con la del sistema.
Para comprobar el numero de usuarios activos tienes que hacer una consulta a esta tabla, pero sacando solo los registros que tengan fecha de hace menos de 25 minutos.
Respuesta
1
No te puedo responder a la pregunta en el sentido de que exista una función que devuelva una lista de usuarios activos. Aparte que la existencia de estos usuarios sería relativa. Porque ahora hay 3 y en segundos no hay ninguno. Debes saber, supongo que lo sabes, que un navegador no interactúa por sí solo con el servidor, sino que es el propio usuario el que realiza una petición y el servidor responde. Esa es toda la interactuación.
De todas maneras, una manera de hacerlo es abrir un archivo en el lado del servidor que se vaya actualizando. Pero, insisto, seguirá siendo relativo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas