1. Сделать мидлвар на все роуты, доступные пользователю (
пример реализации).
2. Мидлвар будет обновлять массив активных юзеров, сам массив пишем например в кеш сервера.
3. Сделать проверку этого массива, например через крон каждую минуту. Если ид юзере есть в массиве - обновляем запись в БД в таблице юзеров.
Оптимальный вариант для не сильно нагруженных сайтов. Главное что не зависит от запросов пользователя, но минимальная точность зависит, например от настроек крона.