Необходимо реализовать подсчитывание активных пользователей на сайте в данный момент. Считать тех, кто отрыл сайт и забыл про него на пол дня не надо. При чём хотелось бы сделать обновление в реальном времени. То есть если к примеру человек закроет вкладку, то это сразу отобразится у других. Значение обновлять буду через вебсокеты, так что главное вовремя, грамотно и с хорошей производительностью считать онлайн на сервере.
в afterAction контроллеров юзеру присваивать переменную lastActive в которую писать unix метку времени, например в базу ее писать. Потом делать выборку пользователей у которых lastActive больше, чем сейчас минус 15 минут например.
Можно вынести это в поведение или в компонент и подключить в конфиге.
LordGuard: кешируйте на 2-3 минуты обязательно, но в любом случае если индекс на этот столбец сделать, то не особо ресурсоемкий запрос будет, тем более если возвращать только id например.
LordGuard: Если пользователей мега много, можно отдельную таблицу иметь или файл где будут храниться только те кто был за последние 15 минут, но не уверен что 50k пользователей это будет менее ресурсоемкой задачей.
а что будет выступать сервером очередей? Если нода, то там и храните в какой-нить переменной. А инкрементить/декрементить сможете на событиях connect/disconnect с последующей отправкой обновленного значения подписчикам.