Visa ett inlägg
Oläst 2007-10-15, 15:34 #9
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
fors fors är inte uppkopplad
Medlem
 
Reg.datum: Aug 2006
Inlägg: 131
Citat:
Originally posted by Stylesearch.se@Oct 15 2007, 14:17
Jag har ett par olika aproch,

1. Den ena (som jag i vanliga fall använder)
är att ha en cachad tabell i minnet som innehåller ip eller anvID + senast uppdaterad. Sen kör jag en count på hur många rader den innehåller.

När cachen gör timeout så kopieras den automatiskt tillbaka till en ny cache men först går den igenom tabellen och tar bort de ip-adresser som inte har uppdaterats inom en minut.


2.
Är det du nämner om att köra lite select, det gör inte så ont att göra en
select count(*) from XXX with (nolock) where online=1 and senastuppdaterad > getdate()...
men då brukar jag köra var 5:e minut istället så att det inte blir för mycket ont för databasen, dock gör ju nolock att den egentigen inte påverkar något annat.

3.
Är att varje användare cachar sin ip+senasttid i en public cache, sen loopar jag igenom alla cachade värden och ser hur många..


När det gäller att uppdatera användarens "senast" i databasen så rekommenderar jag starkt en cache där också... som uppdaterar databasen men den specifika användarens tidpunkt när cachen gör timeout, sätt den på 20 sekunder, det tar bort mellan 20-30 updates i databasen per användare och minut.


Fors,
du cachar resultatet en gång i minuten. Men på vilka kritera? alltså hur länge sedan måste användaren ha gjort något innan du räknar den som aktiv?
SQL-frågan hämtar användarna som har varit aktiva inom de 10 senaste minuterna. Sedan så cachar jag resultatet i 1 minut. Vilket egentligen innebär att listan som visar antalet användare i värsta fall kan skriva ut användare som inte har gjort någonting på maximalt 11 minuter. Dock kan man ju gå in på användarens profil och se den exakta tiden för den senaste aktiviteten. Men jag ser det inte som något problem, eftersom det bara är 1 minut som den maximalt kan fela.
fors är inte uppkopplad   Svara med citatSvara med citat