Не се притеснявайте да откривате разликите между часовите зони. Това не е необходимо.
Всеки път, когато потребителят осъществи достъп до страница, актуализирайте поле в техния запис за последно актуализирано време на таблицата Потребители. След това направете заявка за всички потребители, които имат последно актуализирано време през последните 5 минути. Нещо повече от това и те се считат за „офлайн“.
Ако използвате вашето сървърно време, чрез функцията NOW() в MySQL, ще отклоните изчисляването на разликите между часовите зони.
Това е стандартният начин за проследяване колко потребители са онлайн в момента (значение, активни през последните няколко минути).
Постоянно актуализиран
Ако искате да знаете, че те все още са активни, дори когато не прескачат от страница на страница, включете малко javascript, за да пингувате вашия сървър на всеки 60 секунди или така, за да ви уведомим, че все още са живи. Ще работи по същия начин като първоначалното ми предложение, но ще актуализира вашите записи, без да се налага те да преглеждат сайта ви трескаво поне веднъж на всеки пет минути.
var stillAlive = setInterval(function () {
/* XHR back to server
Example uses jQuery */
$.get("stillAlive.php");
}, 60000);