Foros del Web » Programando para Internet » ASP Clásico »

Demasiadas sesiones abiertas

Estas en el tema de Demasiadas sesiones abiertas en el foro de ASP Clásico en Foros del Web. Amigos, Tengo esto en mi global.asa Código: <SCRIPT RUNAT=server LANGUAGE="VBScript"> SUB Session_OnStart Session.Timeout = 25 if Application("Users")="""" then Application("Users")=0 end if Application("Users")=Application("Users")+1 END SUB SUB ...
  #1 (permalink)  
Antiguo 25/01/2008, 12:00
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 6 meses
Puntos: 6
Pregunta Demasiadas sesiones abiertas

Amigos,

Tengo esto en mi global.asa

Código:
<SCRIPT RUNAT=server LANGUAGE="VBScript">
SUB Session_OnStart
 Session.Timeout = 25
 if Application("Users")="""" then
	Application("Users")=0
 end if
 Application("Users")=Application("Users")+1   
END SUB


SUB Session_OnEnd
 Application("Users")=Application("Users")-1
END SUB

</SCRIPT>
Teoricamente este código sirve para mostrar los usuarios activos en un momento dado, sin embargo, muestra muchos más de los que realmente están activos....

Prueba de esto es que, montado en mi Pc conectada a una red donde se conectan 3 personas, me dice que hay 8 o 10.

En ocasiones me da el error "Mensaje de error HTTP 403.9, Acceso prohibido, Demasiados usuarios están conectados", cuando en realidad estamos 2 o 3 personas máximo.

Creo que XP permite 10 usuarios a lo sumo...la pregunta es ¿por que si solo hay 2 o 3 usuarios pareciera exceder dicho límite?

Apreciaré sus comentarios,
Luis
  #2 (permalink)  
Antiguo 25/01/2008, 12:25
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Demasiadas sesiones abiertas

Tengo un Global.asa que uso para las pruebas pertinentes de quebrarme la cabeza, y no recuerdo exactamente en que post nuestro compañero Tammander, mencionaba que no era muy viable....

ahora en comparacion a tu codigo contra este otro
Cita:
Sub Session_OnStart()
Session.Timeout = 5

Application.lock()
Application("NumVisitas") = Application("NumVisitas") + 1
Application.unlock()

Session.LCID = 2058

End Sub

Sub Session_OnEnd()
Application.lock()
Application("NumSesion") = Application("NumSesion") - 1
Application.unlock()
End Sub
al parecer te falta el application.lock()/.unlock()

podra ser esto???
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #3 (permalink)  
Antiguo 25/01/2008, 13:20
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 6 meses
Puntos: 6
Re: Demasiadas sesiones abiertas

Gracias,

Voy a probar a ver que tal, pero tengo una duda...¿para que sirve el Session.LCID = 2058?
  #4 (permalink)  
Antiguo 25/01/2008, 13:39
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Demasiadas sesiones abiertas

luisvasquez, Shiryu_Libra te dío la repuesta del porque aparecen más usuario de los que lo que realmene están conectados.

La programación web es un ambiente desconectado, me refiero que el servidor no tiene como darse cuenta que el cliente está o no está conectado de forma instantania.

Cuando tu llamas a la primera página de tu sitio se inicia una sesión, por lo tanto se ejecuta el evento Sub Session_OnStart(), pero si tu sitio web no tiene implementado una forma para que el usuario cierre sesión, en el cual reduzcas el contador, el usuario sólo cambiara de página o cerrara la venta del explorador, no tienes como saber que el usuario solió del sitio. Por eso las sesiones tienen un timeout, cuando se cumple el timeout se ejecuta el eveto Sub Session_OnEnd().

Por lo general el IIS tiene configurado un timeout de 20 minutos, por lo tanto si no tienes implementado algún método para el cierre de sesión tedrás que espera ese tiempo para que se reduzca el contador. Por tal motivo en el código que te suministró Shiryu_Libra, ponen el timeout en 5 (me imagino que son 5 minutos). Además aún cuando tengas implementado el método de cerrar sesión el usuario podría solo cerrar la venta del navegador y siempre tendrías que esperar el timeout de la sesión.

Saludos
__________________
Leer es Saber, REEL.
Mi Blog
  #5 (permalink)  
Antiguo 25/01/2008, 13:53
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 6 meses
Puntos: 6
Re: Demasiadas sesiones abiertas

Gracias Reel,

Tu explicación es tecnicamente correcta, sin embargo, lo que me llama poderasamente la atención es que mis estadisticas dicen que tengo 1000 visitas (por ejemplo) en un día x, pero a las 9 de la noche el "contador" de usuarios activos dice que hay "1140" , es decir, parece que un usuario puede crear más de una session. además, con 1000 visitas en 1 día no es factible que todos estuviesen conectados a las 9 pm o al menos 20 minutos antes.


Saludos y gracias,
Luis
  #6 (permalink)  
Antiguo 25/01/2008, 14:42
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 17 años, 3 meses
Puntos: 88
Re: Demasiadas sesiones abiertas

una explicacion bastante buena Reel

pero tambien en ese sentido si indentificaramos a cada persona que entra, deja si usar la pagina (por cual quier motivo que este tuviera), regresa da click en un enlace de la pagina pero ya pasaron los 20 minutos, se inicia otra instancia del usuario, y por eso se incrementa el contador

a lo mejor ese es el factor que ocurre

no creen?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 25/01/2008, 14:53
Avatar de reel  
Fecha de Ingreso: febrero-2004
Ubicación: Managua, Nicaragua
Mensajes: 496
Antigüedad: 20 años, 4 meses
Puntos: 1
Re: Demasiadas sesiones abiertas

Tenes razón Shiryu_Libra es muy problema que por ahí ande el asunto.

Ahora no estoy seguro de como maneja las sesiones ASP, pero me imagino que lo hace con cookies, el problema que si lo usuario no estén guardando las cookies provocando que a cada página que visitan se cree una nueva sesión.

Te recomiendo que trate de averiguar con que frecuencia se está esta ejecutando el evento Session_OnEnd, puedes hacer que te actualize algún campo de una tabla para que tengas una idea cada cuanto esta ocurriendo el evento.

Otra cosa te recomiendo que inicies la variable en el evento Application_OnStart para que la variable este lista desde un inicio.

Saludos
__________________
Leer es Saber, REEL.
Mi Blog
  #8 (permalink)  
Antiguo 27/01/2008, 22:03
Avatar de luisvasquez  
Fecha de Ingreso: diciembre-2003
Ubicación: Venezuela
Mensajes: 879
Antigüedad: 20 años, 6 meses
Puntos: 6
Re: Demasiadas sesiones abiertas

Gracias Amigos,

Extrañamente no recibí los correos de notificación de sus respuestas...por eso tardé en responder...

Las cosas van por allí, tal como sugieren, es posible que solo esté sumando y no restando, por lo que el número se mantiene muy alto...

Voy a probar actualizar un campo de la BD en Session_OnEnd para ver los resultados...

Saludos y gracias,
Luis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:21.