En esta entrada se muestra como podemos mostrar el número de usuarios online que se encuentran conectados a nuestro sitio web. El valor es aproximado puesto que dependerá en gran medida del valor que le demos a la variable $tiempo_conexion. Una buena forma de establecer el valor es viendo, en Google Analytics, el tiempo medio que pasan los visitantes de nuestra web. En cualquier caso, valores entre 100 y 200 suelen ser los más adecuados.
Lo primero que tendremos que hacer es crear una tabla en nuestra base de datos:
CREATE TABLE `useronline` ( `timestamp` int (15) NOT NULL default ´0´, `ip` varchar (40) NOT NULL default ´´, PRIMARY KEY (`timestamp`,`ip`), KEY `ip` (`ip`)) ENGINE=MyISAM DEFAULT CHARSET=utf-8;
A continuación deberemos crear el fichero que mostrará el número de usuarios online. Lo llamaremos usuariosonline.php :
<?
// Variables de conexion
$dbhost = ¨servidor¨;
$dbuser = ¨usuario¨;
$dbpassword = ¨password¨;
$dbname = ¨nombre_base_datos¨;
// El tiempo en segundos que ha de pasar
// para que un usuario se elimine
$tiempo_conexion = 200;
$timestamp=time ();
$desconexion=$timestamp-$tiempo_conexion;
// Insertamos el valor para el usuario
$db = mysql_connect ($dbhost, $dbuser, $dbpassword) or die (¨Connection Error: ¨ . mysql_error ());
mysql_select_db ($dbname) or die (¨Error al conectar a la base de datos.¨);
$Sql =¨INSERT INTO useronline VALUES (´$timestamp´,´$_SERVER[REMOTE_ADDR]´)¨;
$result = mysql_query ( $Sql ) or die (¨No se puede ejecutar la consulta: ¨.mysql_error ());
// Borramos los usuarios cuyo $tiempo_conexion han sobrepasado.
$Sql =¨DELETE FROM useronline WHERE timestamp<$desconexion¨;
$result = mysql_query ( $Sql ) or die (¨No se puede ejecutar la consulta: ¨.mysql_error ());
// Seleccionamos los usuarios que hay online en este momento
$Sql =¨SELECT DISTINCT ip FROM useronline¨;
$result = mysql_query ( $Sql ) or die (¨No se puede ejecutar la consulta: ¨.mysql_error ())
$Usuarios = mysql_num_rows ($result);
if ($Usuarios==1) {
echo $Usuarios.¨ usuario online¨;
} else {
echo $Usuarios.¨ usuarios online.¨;
}?>
Ahora tan sólo tenemos que incluirlo en nuestra web donde deseemos mostrar el número de usuarios online:
<?php include (¨usuariosonline.php¨); ?>