I’m designing my own session handler for my web app, the PHP sessions are too limited when trying to control the time the session should last.
Anyway, my first tests were like this: a session_id stored on a mysql row and also on a cookie, on the same mysql row the rest of my session vars.
On every request to the server I make a query, get these vars an put them on an array to use the necesary ones on runtime.
Last night I was thinking if I could write the vars on a server file once, on the login stage, and later just include that file instead of making a mysql query on every request.
So, my question is: which is less resource consuming? doing this on mysql or on a file?
I know, I know, I already read several threads on stackoverflow about this issue, but I have something different from all those cases (I hope I didn’t miss something):
I need to keep track of the time that has passed since the last time the user used the app, so, in every call to the server not only I request the entire database row, I also update a timestamp on that same row.
So, on both cases I need to write to the session on every request…
FYI: the entire app runs on one server so the several servers scenario when using files does not apply..
It’s easier to work with when it’s done in a database and I’ve been using sessions in database mostly for scalability.
You may use MySQL since it can store sessions in it’s temporary memory with well-configured MySQL servers, you can even use memory tables to fasten the thing if you can store all the sessions within memory. If you get near your memory limit it’s easy to switch to a normal table.
I’d say MySQL wins over files for performance for medium to large sites and also for customization/options. For smaller websites I think that it doesn’t make that much of a difference, but you will use more of the hard drive when using files.