Está usted en Indice > Construcción > Lenguajes > PHP > Lecciones y Paso a Paso > Usuarios activos con PHP con base de datos
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Usuarios activos con PHP con base de datos

Muchos de vosotros habéis podido ver en ciertos sitios un contador de usuarios que se encuentran en ese momento navegando por las mismas páginas que vosotros. Si os habéis fijado bien, habréis podido observar que, para la mayoría de los casos (sino la totalidad), el sitio en cuestión esta programado con ASP como lenguaje de servidor.

Efectivamente, ASP permite una gestión más accesible de las sesiones por medio del famoso archivo global.asa. Esto no quiere decir sin embargo, que PHP es incapaz de realizar el mismo tipo de tareas sino que, más bien, hemos de trabajar un poco más para conseguirlas. En efecto, todos los lenguajes tienen sus pros y sus contras y, en este caso particular, ASP resulta más versátil aunque hay que admitir que, con su versión 4, PHP ha mejorado mucho en todo lo que respecta al tratamiento de sesiones.

Aquí os mostramos una forma sencilla de contabilizar los usuarios activos de vuestro sitio usando para ese propósito una tabla. Dentro de dicha tabla, iremos almacenando los distintos números IP de los visitantes de nuestro sitio y la hora y fecha en la que el visitante ha ejecutado por ultima vez el script.

Asimismo, la tabla ha de ir borrando progresivamente las sesiones que no hayan sido renovadas en un tiempo que nosotros consideremos límite. Nosotros hemos fijado dicho límite en 24 minutos que es el tiempo máximo tomado por defecto por PHP para suprimir los datos de una sesión. Para modificar este tiempo de vida máxima de una sesión puede hacerse en el php.ini a partir del parámetro session.gc_maxlifetime donde expresaremos dicho plazo en segundos. Ojo, este tiempo máximo es restaurado a su valor inicial cada vez que el usuario realiza una petición al servidor, esto quiere decir que un visitante podrá navegar cuanto tiempo quiera por el sitio guardando la misma sesión siempre y cuando no se quede más de 24 minutos sin realizar ningún tipo de acción.

Para el correcto funcionamiento del script, es necesario antes de nada crear una tabla en nuestra base de datos. Esta sentencia SQL puede ayudaros en la tarea:

CREATE TABLE control_ip (
ip VARCHAR(15) NOT NULL,
fecha INT(14) UNSIGNED NOT NULL,
INDEX (ip)
);

Como veis, el campo ip, que almacena el número IP del visitante, está indexado. Esto nos permitirá una selección rápida. En contrapartida, como todo campo indexado, su tamaño en memoria será doblado lo cual no tiene mucha importancia ya que la tabla tendrá un número de registros bastante limitado. Lo importante en efecto es que el script se ejecute rápidamente sin consumir demasiados recursos del servidor, sobretodo teniendo en cuenta que se trata de un código que será sistemáticamente ejecutado en cada una de las páginas del sitio.

Pasemos a continuación a mostrar el script que utilizaremos:

<?
////////////////////////////////////////////
//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
    //Usad vuestros 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);



Usuarios que han visto este tema también han visto...

- Como alternar los colores de las filas de una tabla con PHP
- Manejo de errores en PHP
- Trabajar con Firebird/Interbase en PHP
- Convertir fechas entre MySQL y castellano, en PHP
- Nubes de etiquetas en PHP


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 19-11-2008 a las 22:30:08