Den måde jeg gør det på er periodisk at pinge en speciel handler ved hjælp af AJAX (en gang i 30 sekunder). Det er en hel masse anmodninger, så i stedet for at opdatere online brugertabellen hver gang med sidste besøg, opdaterer jeg memcache. Jeg opdaterer kun databaseposten, når den er 5 minutter efter memcache-posten (du kan vælge en større eller mindre forsinkelse afhængigt af belastningen). Derefter fjerner et cron-job forældede poster fra onlinebrugertabellen.
For at kontrollere, om en bestemt bruger er online, tjekker jeg blot hans memcache-post. Fejlen er aldrig mere end 30 sekunder. Databasen er aldrig mere end 5 minutter bagud, så resultaterne fra databasen er også ret præcise.
Jeg bruger også disse periodiske anmodninger til at sende begivenheder til brugeren.