application CMS, and a website, and i need to display current logged in users to the website accurately, i mean i can't only check on a database flag, like is_loggedin as the session could be expired! I thought about adding a column to the users table "last_request_date" which will update the database after each request, but i don't think this is a good way since on every request i need to update the database.
Does anyone have a better way ?
Highly depends on your auth/security and session design. Back in the old days session management was done exactly like you've described - sessions are represented as a serializable object with map for custom data, which has ttl, and session objects are stored in db. And you're right - last access date should be updated on each request. There's no other way. The most common optimization here is to use separate fast storage (redis, hazelcast, memcached) for session data only. Or use some more advanced than classic "cache aside" cache strategy for sessions if you want it to live in regular db. https://bluzelle.com/blog/things-you-should-know-about-database-caching Nowadays, token based and sessionless approach is more popular. In such design, if you had to fulfill that requirement, you would need to track tokens somehow instead of sessions.
Обсуждают сегодня