Gallo Pinto Blog

Sergio Vargas, bitácora irrelevante

PHP: Como desplegar número de usuarios en línea

Clasificado bajo: Mundo Webmaster, Weblogs — sergio at 12:21 pm on Lunes, Noviembre 19, 2007

Cavilando como establecer el número de usuarios activos o navegando por un web sin tener que sacrificar tiempo de procesador o recursos de hardware cuando el sitio es visitado frecuentemente, llegué a la conclusión de que se debe evitar el uso de tablas y mysql, simplemente por la sobrecarga que esto conlleva.

Número de usuarios en línea

Sesiones (Sessions) de PHP

La alternativa es utilizar sesiones de PHP (sessions), una solución viable pero tiene algunos incovenientes, como es el de contabilizar sesiones que no son propias de nuestro sitio, si estas en un host compartido.

El código es sumamente sencillo y se de puede adaptar a nuestras necesidades.

Código PHP para desplegar visitantes activos, tomando en cuenta solo sesiones activas en los 2 últimos minutos (120 segundos).

function getUsersOnline() {
$count = 0;

$handle = opendir(session_save_path());

if ($handle == false) return -1;

while (($file = readdir($handle)) != false) {
if (ereg(”^sess”, $file)) {

if(time()- fileatime(session_save_path() . ‘/’ . $file) < 120) { // 120 secs = 2 minutes session
$count++;
}

}
}
closedir($handle);

return $count;
}

Paso 2, debes poner una sentencia para iniciar una sesión de php en el inicio de cada página antes de desplegar contenido html. Esta función registra una sessión, que no es más que un archivo indicando que se ha iniciado una sesión web.

session_start();

Para llamar la función getUsersOnline lo puedes hacer así:

echo ‘Usuarios en línea: ‘.getUsersOnline();

Separando las sesiones propias del host compartido

Si utilizas un servidor compartido, debes separar los archivos de sesiones de tu sitio en un directorio particular, asi solo contar sesiones de usuarios propias.

Definir un archivo de sesiones al inicio del script, claro debes crear antes el directorio y permitir la escritura. (Debes establecer la ruta apropiada).

session_save_path(”/ruta/usuario/completa”);

Implementación de la solución

Está solución fue puesta en vivo en el Directorio de Blogs y Bitácoras de YAAQUI.COM, con la salvedad de que el contador no se renueva inmediatamente, algunas veces, ya que el directorio utiliza un sistema de cache para aliviar la carga del mysql durante las horas de mayor tráfico.

Notas: Si mantienes un Weblog o Bitácora puedes registrarlo en el Directorio

Si requieres espacio Web para una bitácora lo encontrarás aquí: Yaaqui Hosting

1 Comentario »

Comentario por Alejo

Julio 3, 2008 @ 4:47 pm

esta buenisimo pero ahira como se hace para saber cual corresponde a cada quine?.
es decir hay 15 usuarios quiero saber si hay forma de identificar por id de sesion o algo asi

RSS de los comentarios de esta entrada. TrackBack URI

Deje un comentario

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>