22. februar 2001 - 11:18Der er
14 kommentarer og 2 løsninger
Opdater brugere
Jeg er igang med en chat der kører på en access db, jeg har en tabel der hedder online der indeholder navn, tid. Tid indeholder seneste tidspunkt for hvornår de har opdateret.....jeg skal så smide dem af hvis de ikke har opdateret i 20 sekunder. jeg har prøvet med dette:
Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"chatten.mdb\") & \"\" Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"Select * From online\" rs.Open strSQL, Conn, 1, 3
Do until rs.eof
if datediff(\"s\", Now, rs(\"time\")) > 20 then rs.delete end if
rs.movenext Loop rs.Close Set rs = Nothing Conn.Close set Conn = Nothing
er det ikke lidt \'tungt\' at gemme online brugere i en base, du har jo session variabler du kan bruge... Der er endda Session.timeout der kan sættes til hvad du vil, så du kan smide dem af efter et interval....
Personligt ville jeg nok sætte tolerancen op til nogle minutter i det mindste, men der er faktisk gode grunde til at benytte et \"hjemmelavet\" system hvis løsningen skal skalere ordentligt, da sessionen ikke kan deles på tværs at flere servere.
bjarke-b, hvorfor skyder du ikke bare følgende af mod basen:
delete from online where time < now()-20
eller hvad det hedder i access, når man skal trække 20 sekunder fra nu
Kasseper => Det er da rart at kode noget der kan klare en distribueret løsning, når nu at bjarke-b har så meget success at han skal bruge mere end en webserver, men stadig én databaseserver.
To trin: Trin (1) slet de gamle ved at skyde min \"delete from\" af. (2) Dernæst kan du lave en almindelig select hvor du ved at alle er online!
Hvad mener du med eksempel, koden står i mit svar. Du skal ikke ind i noget loop. Du sletter alle gamle på én gang.
Nej, ikke fra starten af, men for alle løsninger, gælder det om at have en optimistisk tilgang til det forventede resultat. Og IIS kan ikke dele sessionvariable på tværs af flere webservere som spejler hinanden. Hvilket vil sige at man ikke kan fordele workload over flere webservere da en bruger bliver stavnsbundet til en bestemt server når man logger in.
Ja Ja, men nu snakker vi jo om et, som du selv sagde \"hjemmelavet\" system. Det lader ikke til at det skal struktureres efter sådanne resourceafhængigheder. Generelt vil jeg da give dig ret i at man bør være meget opmærksom på belastningerne, men at dele en chat session op på flere servere, vil da i den grad være overKill.
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.