Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Edgard Cortez

Session Timeout

Recommended Posts

Olá, Pessal!

 

É meu primeiro post no Imasters e tenho um problema. Criei uma sala de bate-papo porque as que baixei da internet não funcionaram a contento. O funcionamento base da sala ocorre bem, mas tenho um sério problema com o Time out e global.asa. O Timeout as vezes se encerra antes do período configurado no chat, e o global.asa costuma excluir todas as sessões assim que a primeira abandona o site. É interessante observar que, quando clicado o botão "SAIR" abre-se uma página contendo o Session.Abandon, e somente a session é encerrada, mas quando o navegador simplesmente é fechado, começa a contagem de inatividade da primeira sessão e, ao fim, todas as sessões são excluídas. Já configurei a página que gera as sessions e o global.asa de várias maneiras, seguindo instruções de internautas de outros fóruns e nada dá certo. Se alguém puder me ajudar, ou quiser ser contratado para resolver o problema da forma mais simples possível, agradeço. Abaixo os códigos:

 

base do chat criado:

Após o login no site e criação do nick uma página cria duas session: "Session("usuario")" e Session("IDUsuario")". Esta última grava o Session.SessionID e a primeira o nick escolhido. As mensagens, seja de entrada, saída ou de comunicação em geral são gravadas em banco de dados e recuperadas pela página correspondente por sistema em ajax, assim como os nicks também são gravados e recuperados. Após clicar num botão "SAIR", um javascript abre uma página no conjunto principal contendo o objeto Session.abandon(), e então a session correpondente é excluída pelo global.asa assim como a mensagem de saída é gravada pelo mesmo. O global.asa deveria estar configurado também para excluir somente aquela sessão que saiu do chat simplesmente fechando o nagedor, o que ocorre conforme explicado acima. Toda vez que umas mensagem é enviada no chat há uma chamada para as session criadas assim: <%=Session("usuario")%> e <%=Session("IDUsuario")%>em dois campos ocultos de formulário (um pasra cada sessão).

 

script que gera a sessão quando o chat inicia:

 

<% 
Session.timeout = 30
Session("IDUsuario") = Session.SessionID
Session("usuario") = Request.Form("nick")
%>
global.asa:

 

<script LANGUAGE=VBSCRIPT RUNAT=SERVER>
Sub Application_OnStart
End Sub

Sub Session_OnStart
	Application.lock
	Session.Timeout = 1400
	Session("usuario") = ""
	Session("IDUsuario") = "" 
	Application.Unlock
End Sub

Sub Session_OnEnd
	Application.lock

	if Session("IDUsuario") <> "" then
	var_horaA = hour(now)
	var_minutoA = minute(now)
	var_segundoA = second(now)
	var_horaB = (var_horaA < 10)
	var_minutoB = (var_minutoA < 10)
	var_segundoB = (var_segundoA < 10)

	if var_horaB = True then
	var_horaC = "0" & var_horaA
	Else
	var_horaC = var_horaA
	End if

	if var_minutoB = True then
	var_minutoC = "0" & var_minutoA
	Else
	var_minutoC = var_minutoA
	End if

	if var_segundoB = True then
	var_segundoC = "0" & var_segundoA
	Else
	var_segundoC = var_segundoA
	End if

	var_hora = var_horaC & ":" & var_minutoC & ":" & var_segundoC
	
	Dim MM_conect_01_STRING
MM_conect_01_STRING = "dsn=Fonte_Poenarco_2;"

sqlstmt2 = "delete from TB_Nick where CodigoCliente = '" & Session("IDUsuario") & "'" 
set conn = server.createobject("adodb.connection") 
conn.open "Fonte_Poenarco_2" 
set rsquery2 = conn.execute(sqlstmt2)

codigo = Session("IDUsuario")
nick = Session("usuario")
mensagem = "*** Saiu da Sala ***"
hora = var_hora
dia = day(now)
mesano = month(now) & "/" & year(now)
entradasaida = "Saida"
sqlstmt = "insert into TB_Mensagens (CodigoCliente, Nick, Mensagem, HoraEntrada, DiaEntrada, MesAnoEsntrada, EntradaSaida) values ('" & codigo & "','" & nick & "','" & mensagem & "','" & hora & "','" & dia & "','" & mesano & "','" & entradasaida & "')" 
set conn = server.createobject("adodb.connection") 
conn.open "Fonte_Poenarco_2" 
set rsquery = conn.execute(sqlstmt)

	End if
	
	Application.Unlock
End Sub

Sub Application_OnEnd
End Sub
</SCRIPT>
Mais uma vez, meu muito obrigado a quem se prontificar a me ajudar.

Meu e-mail: edgardpcortez@ig.com.br

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

Fechar as conexões ja ajuda bastante. senão fica um monte de conexão aberta comendo o teu servidor.

conn.close()
set conn = nothing
Coloca no fim das transações.

 

Procura colocar os códigos no post usando as tags de código, assim a gente entende melhor a por causa da identação.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum numero de erro ?

na session_onEND, você esta deletando primeiro , e depois dando um Insert

 

existe exemplos no forum, pode te ajudar também...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.