I am trying to make some changes to an opensource project. I want to keep track of when users log in and log out.
Right now I change their login status in db when they login or manually log out. The problem right now is that I cannot find out if the user just closed their browser without pressing on logout button.
For this reason I need to trigger a function that will change database every time the user’s session expires.
I’ve tried session_set_save_handler in PHP, but it looks like I need to override the whole session behavior. What I am looking for is to keep default session behavior and just add functionality when the user’s session expires. Is there a way to do that?
I am trying to make some changes to an opensource project. I want to
Share
I did something really nasty once. Every time a session was “updated” by a page refresh / fetch / etc., I updated a timestamp on a DB row. A second daemon polled the DB every 10 minutes and performed “clean-up” operations.
You won’t find any native PHP facilities to achieve your goal. Session timeout doesn’t run in the background. You won’t even know if a session is timed out, unless a timed out session attempts another access. At this point, nearly impossible to trap, you can make your determination and handle it appropriately.
I’d recommend a queue & poll architecture for this problem. It’s easy and will definitely work. Add memcached if you have concerns about transaction performance.