Nie zawracaj sobie głowy ustalaniem różnic między strefami czasowymi. To nie jest konieczne.
Za każdym razem, gdy użytkownik uzyskuje dostęp do strony, zaktualizuj pole w swoim rekordzie tabeli Użytkownicy, kiedy ostatnia aktualizacja była aktualizowana. Następnie wykonaj zapytanie dla wszystkich użytkowników, których czas ostatniej aktualizacji nastąpił w ciągu ostatnich 5 minut. Cokolwiek więcej niż to, i są uważane za „offline”.
Jeśli użyjesz swojego czasu serwera, za pomocą funkcji NOW() w MySQL, zboczysz z obliczania różnic między strefami czasowymi.
Jest to standardowy sposób śledzenia, ilu użytkowników jest obecnie online (czyli aktywnych w ciągu ostatnich kilku minut).
Stale aktualizowane
Jeśli chcesz wiedzieć, że nadal są aktywne, nawet gdy nie przeskakują ze strony na stronę, dołącz trochę skryptu java, aby pingować serwer co około 60 sekund, aby poinformować Cię, że nadal żyje. Będzie działać tak samo, jak moja pierwotna sugestia, ale zaktualizuje Twoje dane bez konieczności gorączkowego przeglądania Twojej witryny co najmniej raz na pięć minut.
var stillAlive = setInterval(function () {
/* XHR back to server
Example uses jQuery */
$.get("stillAlive.php");
}, 60000);