aspcountUna
forma práctica de conocer y compartir datos sobre la interacción
de los usuarios con un sitio es listar los usuarios o sesiones activa. A
diferencia de otros protocolos del Web como conexiones FTP, email, Telnet,
etc. que registran una conexión desde el momento que el usuario la solicita
hasta que se desconecta del servicio, el protocolo HTTP es diferente. Cada
vez que el usuario visualiza una página en su navegador, este realiza una
conexión individual por cada uno de los archivos que componen la página. Así
si por ejemplo, al solicitar este documento, nuestro navegador probablemente
se conecto y desconecto varias veces al servidor donde reside Maestros del
Web descargando el archivo HTML que forma la página y cada uno de los archivos
gráficos que están incluidos. Entonces con el protocolo funcionando de esta
forma, no es tan sencillo contar a los usuarios ya que no podemos contar el
tiempo que pasen leyendo un documento, ni mucho menos saber si van a ver otro
documento hasta que efectivamente lo hagan.

Con la ayuda de ASP podemos utilizar
sesiones del usuario para ir contabilizando los visitantes actuales de un
sitio web.

Las Sesiones son un objeto en ASP que le asigna un espacio temporal de almacenamiento
de información a cada visitante del sitio. Esto se implementa por medio de
Cookies sin propiedades de expiración asignada, por lo que permanecen en la
computadora del usuario hasta que cierra su navegador. La única desventaja
radica en que no todas las personas navegan con la opción de Cookies activadas,
por lo que esto podría cancelar la sesión y arruinar nuestro contador. Por
otra parte, el uso de Cookies ya se está generalizando y casi todos los navegantes
las utilizan en sus navegadores.

Luego de haber comentado respecto a las sesiones, vamos a platicar sobre un
archivo bastante popular dentro de los desarrolladores de ASPs. El archivo global.asa es aquel donde se define una
aplicación web dentro del Internet Information Server. Este archivo contiene
códigos manejadores de eventos como lo son Application_OnStart, Application_OnEnd, Session_OnStart y Session_OnEnd. Los dos primeros con el
prefijo Application_ se manejan dentro del servidor
y se activan cuando se solicita el primer archivo .asp, terminando al apagar
el servidor. Luego, los dos con el prefijo Session_
que son los que nos interesan se manejan por cada usuario. Así cuando una
persona solicita un archivo .asp en el sitio, el Session_OnStart se inicia y el Session_OnEnd que es el que finaliza la
sesión puede ser terminado de dos formas: La primera es por medio de la ejecución
de un script y la segunda por asignación de tiempo.

Así que una vez explicado el funcionamiento de las Sesiones en ASP y como
podemos manipularlas en el archivo global.asa,
pasemos a lo práctico:

1. <SCRIPT LANGUAGE="VBScript" RUNAT="Server">
2.
	3. Sub Application_OnStart
 4.Application("ActiveUsers") = 0
5. End Sub
6.
 7. Sub Session_OnStart
 8. Session.Timeout = 20
 9.Session("Start") = Now
 10. Application.Lock
 11. Application("ActiveUsers") = Application("ActiveUsers") + 1
 12. Application.UnLock
13. End Sub
14.
 15. Sub Session_OnEnd
 16. Application.Lock
 17. Application("ActiveUsers") = Application("ActiveUsers") - 1
 18.     Application.UnLock
19. End Sub	
20. 
21. </SCRIPT>

El código anterior sería los contenidos
de nuestro archivo global.asa localizado en el directorio
principal de nuestro servidor virtual.

Ahora para explicar lo que sucede en
estos scripts:

En la línea 1,
tenemos el inicio del tag del script que nos menciona el lenguaje que utilizaremos
y asigna que se ejecutará en el servidor.

En las líneas 3, 7 y 15 se encuentran las aperturas de los scripts Application_OnStart, Session_OnStart y Session_OnEnd. Como notarán Application_OnEnd no aparece en el código
pues no es necesario utilizarlo.

La línea 4 le asigna a nuestra variable de aplicación ActiveUsers un valor de 0 cada vez que
el servidor arranca. La asignamos como aplicación para que todas las sesiones
puedan captar su valor y manipularla.

En la línea 8 definimos el tiempo que durará cada sesión, siendo 20 minutos el valor predeterminado.
Es muy importante tomar en cuenta que cada usuario tendrá una sesión de 20 minutos,
por lo que de no cargar nuevos contenidos de nuestro sitio en 20 minutos ya
no será tomado en cuenta y se ejecutarán los contenidos de Session_OnEnd.

La línea 9 es solo una forma de asegurar que la sesión inicie por cada usuario conectado,
ya que aunque el usuario soporte cookies en su navegador, la sesión podría no
ser tomada en cuenta.

En la línea 11 hacemos funcionar el contador. Por cada nueva sesión, se suma una unidad a nuestra
variable ActiveUsers. Finalmente en la línea 17 por cada sesión que expira se va restando una unidad a nuestra variable. Las líneas 10,
12,
16
y 18 abren y cierran la aplicación. Esto es un procedimiento de seguridad ya que
si varios usuarios tratan de modificar el valor de la variable simultáneamente
podría causar errores.

Todo el código que ya repasamos nos da por resultado la variable de aplicación
ActiveUsers. Este valor es el número de
sesiones activas en el servidor, lo que representará el número de usuarios activos.
Como pudieron ver en el proceso esta variable no
representa el número exacto de usuarios viendo las páginas, pero si las sesiones
abiertas, por lo que es casi lo que queríamos.

Luego de haber obtenido este valor, basta con incluir la siguiente línea de
código en todas las páginas .asp donde queramos ejecutar el resultado:

<%= Application(“ActiveUsers”) %>

Esta línea imprimirá el número de sesiones que actualmente hay en el sitio.

Como ven no fue tan difícil. Espero que este artículo les haya sido de utilidad.
Estaremos incluyendo nuevos talleres de ASP en el futuro, por lo que esperamos
sus comentarios.