Hinweis von mir:
Ich selbst hatte auch anfänglich eine Variante implementiert die sich beim "join" einen Timestamp merkt und beim "leave" bzw. "shutdown" die Differenz zwischen Date.now() und diesem Timestamp als Onlinezeit speichert. Allerdings hatte ich damit dann auch ab dem ersten Server-Crash korrupte Daten, da dann kein "leave"/"shutdown" passiert auf das ich reagieren kann. Dagegen kann man sich theoretisch auch schützen indem man die Validität der Timestamps beim Differenz berechnen überprüft. Allerdings verliert man damit dann eine Session.
Robuster ist da tatsächlich ein Interval dass in der gewünschten Häufigkeit über alle User iteriert und deren Online-Counter hochzählt. Damit verliert man maximal den Zeitraum eines solchen Intervals. Das wäre also das vermutlich kleinere Übel und ist auch transparenter.
_________________________
There is no good without evil, but evil must not be allowed to flourish.
There is passion, yet peace; serenity, yet emotion; chaos, yet order.