У меня есть свой собственный скрипт форума на PHP (на самом деле Yii2), и я хочу показать онлайн-пользователям.
Было бы легко, если бы пользователи были активны до выхода из системы. Но это не тот случай. В большинстве случаев пользователь оставляет свои машины в системе, но они не активны. Здесь я мог бы использовать ограничение по времени (продление времени с каждым запросом и удаление тех, которые превысили этот срок), но разве это не излишне?
Есть ли какой-нибудь популярный / лучший способ мониторинга онлайн-пользователей на форуме?
Одним из возможных способов является перехват событий пользовательского интерфейса в javascript и отправка ajax-уведомления на сервер о том, что пользователь все еще там. Конечно, это должно быть буферизовано, чтобы вы не залились запросами, когда пользователь перемещает мышь. Нечто подобное
$('body').on('keydown mousemove scroll', function() {
clearTimeout(notifyTimer);
notifyTimer = setTimeout(function() {
$.get('my-server.com/user-is-active');
}, 60 * 1000);
});
На стороне сервера обновите last-active
поле в таблице пользователей с текущей отметкой времени. При отображении онлайн-пользователей выберите тех, у кого last-active > now - 15 min
,
Других решений пока нет …