Visa ett inlägg
Oläst 2007-10-15, 15:17 #8
Stylesearch.se Stylesearch.se är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2006
Inlägg: 8
Stylesearch.se Stylesearch.se är inte uppkopplad
Nykomling
 
Reg.datum: Jul 2006
Inlägg: 8
Jag har ett par olika aproch,

1. Den ena (som jag i vanliga fall använder, och för att inte blanda in databasen)
är att ha en cachad tabell/array 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. Har slagit sådana mot db's med över 250 000 användare. Nyckeln är att ha en online-bit så att den inte behöver gå igenom precis allihopa (sen köra en uppdate av onlinebitten varje timma eller liknande för att få bort dem som lämnat sidan utan att logga ut).

3.
Är att varje användare cachar sin ip+senasttid i en public cache, sen loopar jag igenom alla nycklar hela cachen och ser hur många.. (precis samma som 1:an men utan någon array)


När det gäller att uppdatera användarens "senast" i databasen så rekommenderar jag starkt en cache där också... som uppdaterar databasen med 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?
Stylesearch.se är inte uppkopplad   Svara med citatSvara med citat