Avatar billede gadebarnet Nybegynder
19. april 2005 - 09:35 Der er 20 kommentarer og
1 løsning

bedste metode til antal online

Ganske simpelt...

Hvad er den bedste metode at lave antal online?

noget global.asa eller hvordan?

Gerne et link eller en forklaring til hvordan?
Avatar billede dbangx Nybegynder
19. april 2005 - 09:40 #1
her skulle være et eksempel på hvordan det gøres med global.asa og Application collectionen:

http://forum.weborum.com/lofiversion/index.php/t319.html
Avatar billede gadebarnet Nybegynder
19. april 2005 - 09:48 #2
hmm, okay, så har jeg lært lidt...

Men siden man ikke kan eksekvere database code, og på den måde kunne lave en tabel via sql over dem der er online, med dato, brugernavn, osv...

Har du en ide til det?
Avatar billede dbangx Nybegynder
19. april 2005 - 09:57 #3
jada... det er ikke værre end at du laver nogle arrays. de skal bare have samme index for at referere til samme bruger.

Application("brugere") = Array
Application("loggedOn") = Array
Application("osv.") = Array
Avatar billede gadebarnet Nybegynder
19. april 2005 - 10:00 #4
Men siden at brugernavnet, brugerid, dato, kommer fra database hvordan smider jeg så dem ind der... Jeg tror ikke at jeg forstår brugen af global.asa...

Jeg er igang med at læse nogle et de indlæg der er her på eksperten.dk ved en søgning efter global.asa, men der er jo sindsygt mange.
Avatar billede dbangx Nybegynder
19. april 2005 - 10:08 #5
global.asa er en fil med fire metoder, der køres på forskellige tidspunkter:

når serveren startes
når en session startes
når en session sluttes
når en serveren lukkes

det smarte ved dette er at du når serveren starter kan initialisere dine variabler i Application("var")

når en bruger logger på (Session_OnStart) kan du hælde hans information i dine variabler. Når han så logger ud i Session_OnEnd kan du fjrne ham igen.
Avatar billede gadebarnet Nybegynder
19. april 2005 - 10:12 #6
Ja, det har jeg forstået, men når han nu kommer til siden så har jeg forstår dette her sker:

global.asa køres
default.asp køres


Hvis nu jeg først har hans brugernavn, og alt det i default.asp hvordan smider jeg det så over i global.asa...

Kan du følge mig?

Kan man godt operere med application variabler i asp filer?

Kan du ikke give et eksempel på hvordan jeg gør?
Avatar billede gadebarnet Nybegynder
19. april 2005 - 10:13 #7
og man kan jo ikke lave database kald fra global.asa eller ???
Avatar billede dbangx Nybegynder
19. april 2005 - 10:15 #8
jeg mener det ikke nej, men du må ikke hænge mig op på det
Avatar billede dbangx Nybegynder
19. april 2005 - 10:27 #9
ok, det kan man måske godt alligevel:
her er en beskrivelse at de fire subs, se evt. : http://www.learnasp.com/learn/global.asp

session_onstart
if 100 users hit your website for example, 100 session starts are initiated and the code in this event is fired for each user before their first page is fetched and displayed. But those same 100 users can wander all over your site and another session start will not occur as long as they are actively fetching pages

session_onend
Any user that does not fetch any page from your site for 20 minutes (can be adjusted in the Registry/IIS3 or the metabase/IIS4) has ended their session. The code you put in this event can not affect the users as they have already left your site but it can allow you to place cleanup code or code that dumps for, example, session data into a database.

application_onstart
The webserver starts. dozens to hundreds to thousands of users hit the site. The minute the first user fetches the first file in an application directory an application_onstart occurs  and never occurs again no matter how many people are visiting. But if a webserver stops and starts and application_onstart fires. But code inside an application_onstart is code that assumes the entire casino is a "blank slate" not a busy place. If for example, application_onstarts fire often this is not a desired behavior since it may have the role of bootsrapping an app and setting certain conditions that don't make sense to set while activity is occuring.

application_onend
The web server stops, the application ends.
Avatar billede gadebarnet Nybegynder
19. april 2005 - 10:35 #10
Jeg kan nu altså stadigvæk ikke se hvordan jeg skulle gøre det...

Har lige læst i en wrox bog, at det er muligt at lave database kald i en database. Men hvis nu jeg kunne give en unique session id...

ahh...

Hvis nu jeg når der kommer en session_onstart opretter en post i en database med et felt der er uniqueid, og så smider det uniqueid ud i en variabel, så kan jeg jo opdatere databasen med brugernavn, dato osv...

Men hvad så når den skal dø...???

Jeg kan jo ikke gemme en session variabel når den er væk, og session_onend bliver jo først kørt når session'en er død, efter et vist antal minutter...

Gemmer den alle sessions aligevel?

Kan du følge mig ?
Avatar billede dbangx Nybegynder
19. april 2005 - 10:39 #11
du kan bruge ASPs : SessionID til unique id

du burde kunne tilgå denne under session_onend
Avatar billede gadebarnet Nybegynder
19. april 2005 - 10:43 #12
se her:
---
<script LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
    Application("OnlineUsers") = 0
end sub

sub Application_OnEnd
   
end sub

sub Session_OnStart
    Session.Timeout = 5
    Application.lock
    Application("OnlineUsers") = Application("OnlineUsers") + 1
    Application.unlock

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open = ""
    Session.LCID = 1030
   
    conn.execute("insert into tbl_login (str_dato) values('"&now&"')")
   
   
    conn.close
    set conn = nothing
   
   

end sub

sub Session_OnEnd
    Application.lock
    Application("OnlineUsers") = Application("OnlineUsers") - 1
    Application.unlock
end sub
</script>
---


Det virker...

Så skal jeg bare kunne rette i den database med mit login script (og det kan jeg godt finde ud af) og så kunne slette igen når session_onend bliver kørt...

conn.open er tom pga. af sikkerhed...
Avatar billede dbangx Nybegynder
19. april 2005 - 11:12 #13
det ser godt ud :-)
Avatar billede gadebarnet Nybegynder
19. april 2005 - 11:25 #14
Ja, og nu har jeg lavet en der virker TOTAL som jeg gerne vil have...

Hvis du kan forklare hvilken variabel type jeg skal bruge til session.sessionid så er der point til dig... Lige nu køre det på en nvarchar på 50... Det burde da kunne række til et stykke tid eller hvad ?

Sådan her blev resultatet:
---
<script LANGUAGE=VBScript RUNAT=Server>
sub Application_OnStart
    Application("OnlineUsers") = 0
end sub

sub Application_OnEnd
   
end sub

sub Session_OnStart
    Session.Timeout = 5
    Application.lock
    Application("OnlineUsers") = Application("OnlineUsers") + 1
    Application.unlock

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open = ""
    Session.LCID = 1030
   
    conn.execute("insert into tbl_login (str_dato,str_asp_id) values('"&now&"','"&session.sessionid&"')")
   
   
    conn.close
    set conn = nothing
   
   

end sub

sub Session_OnEnd
    Application.lock
    Application("OnlineUsers") = Application("OnlineUsers") - 1
    Application.unlock
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.open = ""
    Session.LCID = 1030
   
    conn.execute("delete from tbl_login where str_asp_id="&session.sessionid&"")
   
   
    conn.close
    set conn = nothing
end sub
</script>
---

Jeg poster den så andre kan bruge det hvis de vil...

Og igen er open tom, pga. sikkerhed.
Avatar billede dbangx Nybegynder
19. april 2005 - 12:03 #15
så skal jeg jo vide hvilken database du bruger men er det mssql, så vil jeg anbefale int, da den kan være op til 2147483648  mens session.sessionID kun er 9 numeriske stor
Avatar billede gadebarnet Nybegynder
19. april 2005 - 12:11 #16
hvad sker der så med session.sessionID når den når til 999999999 ???
Avatar billede dbangx Nybegynder
19. april 2005 - 12:18 #17
no idea... det viste sig ved nærmere søgning at datatypen er long. microsoft anbefaler ikke at man bruger sessionID som uniqueIdentifier i databaser mv. se evt her:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iissdk/html/06c8fe34-d7e5-469f-a2a8-9bd0570850da.asp
Avatar billede gadebarnet Nybegynder
19. april 2005 - 12:41 #18
nej, det gør jeg heller ik... Jeg bruger den bare til fange den bruger der er inde... den skal kun bruges 1 gang...
Avatar billede dbangx Nybegynder
19. april 2005 - 12:43 #19
så er det ok... tror ikke at iis bruger det samme sessionIS for 2 simultane brugere
Avatar billede gadebarnet Nybegynder
19. april 2005 - 12:45 #20
Nej, det gør den ikke...

Nå men tak for hjælpen...

Skal du have nogle point?
Avatar billede dbangx Nybegynder
19. april 2005 - 12:47 #21
selv tak
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