Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 11:19 Der er 23 kommentarer og
2 løsninger

Sessions "keep alive"

Hejsa
Jeg har en side hvorpå jeg bruge mange "session" til at holde styr på forskellige ting - bladt andet login.

Men den udbyder jeg har "dræber" session efter kun ca. 5 min. Det giver mig en del problemer.

Kan jeg lave et eller andet smart der holder mine session i live indtil brugeren selv vælger at "dræbe" dem? Jeg har tænk på at lave en IFrame der så hvert 4 min reloader sig selv og på den måde opdaterer tidsstemplet på mine sessions. Men er det er god ide? Eller hvad ville I gøre?

PS: Jeg bruge VPscripting
Avatar billede krogstrup Nybegynder
31. maj 2004 - 11:25 #1
jeg ville gøre det samme som du foreslår: en Iframe med et dokument der via f.eks. meta refresh indlæser sig selv hver 4. minut. Det burde fungere udemærket.
Avatar billede cpccorp Juniormester
31. maj 2004 - 11:26 #2
inkluder på alle sider denne:

session.timeout = x

hvor x = antal minutter
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 11:32 #3
cpccorp --> selvom jeg har sat en timeout på fx. 20 min - så vil de alle blive "dræbt" med kaldet Session.Abandon ik?

Og en ting til, tror du jag kan overskrive serveren hos min udbyder med kaldet session.timeout?
Avatar billede keysersoze Ekspert
31. maj 2004 - 11:33 #4
cpccorp >> det er da total unødvendigt at lægge den på alle sider - læg den i global.asa og det er en gang for alle.

iframen som krogstrup forslår er det nok mest stabile - så den ville jeg også foreslå. Samtidig med det så læg en session.timeout i din global.asa fil - så har du gjort alt hvad du kan
Avatar billede keysersoze Ekspert
31. maj 2004 - 11:33 #5
session.timeout er default sat på serveren - men den kan du godt ændre.

Alle session bliver dræbt med abandon - ja
Avatar billede cpccorp Juniormester
31. maj 2004 - 11:34 #6
Slow ups
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 11:38 #7
keyseroze -->> skal jeg så ikke inkluderer globel.asa på alle sider?
Avatar billede cpccorp Juniormester
31. maj 2004 - 11:45 #8
den skal ikke inkluderes nogensteder, istedet skal den bare ligge i roden, den aktiverer sig selv
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 11:51 #10
Super nice! Tak for det ;-)
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 16:01 #11
Hmm det har en negativ effekt det med session.timeout

Jeg tæller "online brugere" med "Application("ActiveUsers")" og nu tæller en bruger som online 30 minutter efter efter han er kommet på siden.
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 16:02 #12
jeg har sat session.timeout = 30
Avatar billede keysersoze Ekspert
31. maj 2004 - 16:27 #13
applications og session har ikke noget med hinanden at gøre - så må det i stedet være måden du tæller activeusers op og ned
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 16:31 #14
ja, men den her jeg jo ikke ændret på:
--------------
Sub Session_OnStart
    ' Forøger antallet af brugere med 1, når en session startes
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") + 1
    Application.UnLock
End Sub
-------------------
Sub Session_OnEnd
    ' Reducer antallet af brugere med 1, når en session afsluttes
    Application.Lock
        Application("ActiveUsers") = Application("ActiveUsers") - 1
    Application.UnLock
End Sub
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 16:32 #15
Der går vel 30 min inden Session_OnEnd kører nu - eller?
Avatar billede krogstrup Nybegynder
31. maj 2004 - 16:33 #16
yeps :-(
Avatar billede krogstrup Nybegynder
31. maj 2004 - 16:33 #17
kan du ikke bare nøjes med IFRAME løsningen alene - det løser jo dit problem...?
Avatar billede krogstrup Nybegynder
31. maj 2004 - 16:33 #18
så bibeholder du din activeUsers variabel nogenlunde reel...
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 16:35 #19
Ja, men det vil bare give en ret uheldig virkning på min statistik da antallet af sidevisninger vil stige en hel del... Men jeg kan selvfølgelig bare trække antallet af visninger på KeepAlive siden fra... Men det er lidt noget bøvl
Avatar billede keysersoze Ekspert
31. maj 2004 - 16:48 #20
Jeg kan ikke helt se problemet.

De skriver i dit spørgsmål at en session skal leve indtil brugeren selv vælger at stoppe den - altså må man regne med at en bruger regnes som besøgende på siden i minimum 30 minutter (da det jo er det session.timeout er sat til) medmindre alle brugere husker at logge sig korrekt ud.

Logger alle brugere sig korrekt ud (og selvfølgelig hvis det er kodet rigtigt) ja så vil "activeusers" jo automatisk gå en ned og dermed altid vise det rigtige til.

Det er næppe alle der husker at logge sig ud og derfor vil du alt andet lige komme til at få et højere "activeusers"-tal end hvad der reelt er af besøgende på siden - men det må man acceptere når man vælger en så høj timeout.
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 17:04 #21
Hvis jeg bruger en IFrame, kan jeg jo selv bestemme hvilke session jeg vil holde i live - bruger jeg session.timeout så gælder rammer jeg også de brugerer som ikke logger ind - det er kun ca. 25 % af siden hvor login er nødvendig
Avatar billede keysersoze Ekspert
31. maj 2004 - 17:11 #22
selv bestemme hvilke session der holdes i live? ja, hvis iframen kun er aktiv når man er logget ind, for ellers vil den automatisk refreshe alle de sessions en given bruger har
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 17:13 #23
En bruger har kun sessions når han er logget ind.
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 19:46 #24
Jeg har lavet denne løsning. Jeg har slettet session.timeout og i stedet lavet nogle JS funktioner som efter 4 min og 30 sek kalder en IFRAME der opfrisker mine sessions - det sker 3 gange - og har brugeren fortsat ikke rørt på sig kalder jeg en funktion som logger ham ud og giver ham en alert herom. Hver gang brugeren åbner en side begynder keepalive funktionen forfra.

Så efter ca. 13 minutter inaktivitet får han en alert og bliver logget af

Tak for hjælpen
Avatar billede kimlarsen1978 Nybegynder
31. maj 2004 - 19:50 #25
Hvis andre skal bruge noget ligende, eller hvis i kan se en bedre løsning så er koden her.
----------------------
<SCRIPT LANGUAGE="JavaScript">
function keepalive() {
    timerID=setTimeout('keepalive2()',250000);
}
function keepalive2() {
    document.frames.KeepAlive.location.href='keepAlive.asp';
    timerID=setTimeout('keepalive3()',250000);
}
function keepalive3() {
    document.frames.KeepAlive.location.href='keepAlive.asp';
    timerID=setTimeout('keepalive4()',250000);
}
function keepalive4() {
    document.frames.KeepAlive.location.href='keepAliveAlert.asp';
}
</Script>
------------------------
Grunden til at jeg kalder keepalive2() og keepalive3() som har samme funktionalitet som keepalive() er at jeg skal nå at forny mine sessions inden serveren "dræber" dem, hvilket den gør hvert 5 min. I keepAlive.asp opfrisker jeg mine sessions.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging