я думаю, что этого не нужно делать с таблицей сессий поскольку сессия - это не только авторизация пользователей, хотя она и используется авторизации пользователя. и наличие файла с сессией еще не говорит о том, что юзер онлайн. он мог уйти, но сессия живет в виду того, что session.gc ее не убил
монитор онлайн ли юзер я бы сделал как-то по-другому: как-то мониторить юзера и сохранять его статус. либо ажаксом опрашивать, либо добавить фильтр на все контроллеры, либо как-то на сокеты повесить. но соотношение (user_id, session_id) хранить в отдельной таблице
я бы
- не изменял структуру таблицы для кеша
- я бы хранил (user_id, session_id) в отдельной таблице