in reply to Re: Maintaining state with CGI.pm
in thread Maintaining state with CGI.pm

This post reminds me of a problem I am currently experiencing. . . If the state of the data is stored in a database, for example, and we pass around a session ID, how do we keep our database from becoming cluttered? How and when do we clean up the data left behind by no-longer used sessions? I imagine schedule a task to delete unused sessions, but by what criteria? Do we update the session timestamp every time a user performs and action, and delete only those sessions that haven't been touched in, for example, 30 minutes?

Just curious ;) Thanks!

MrCromeDome

Replies are listed 'Best First'.
Re: Re: Re: Maintaining state with CGI.pm
by Masem (Monsignor) on Jun 01, 2001 at 00:54 UTC
    You pretty much have the right idea. What you need to do if you go this route is have a sample selection of your users estimate the time it took to fill out the forms, and take a reasonable average and triple it. So if took the average user 15 minutes to do it, don't delete the entry for at least 45 minutes. Make sure to test this with remote users from a variety of connection types, and with users that have not filled out that form before, so that you get a good average. Of course, this time also could be a factor as determined by how many hits you get; if you expect that only one person a day will fill out a form, you probably can clear the database on a weekly basis. If, on the other hand, you get 100 people a minute filling the form, then yes, you want to minimize the time between database clearing.


    Dr. Michael K. Neylon - mneylon-pm@masemware.com || "You've left the lens cap of your mind on again, Pinky" - The Brain
Re: Re: Re: Maintaining state with CGI.pm
by franknmonk (Monk) on Jun 01, 2001 at 19:18 UTC
    Another method of cleaning out old entries is to do so every time you enter a new entry. (I use this a lot with shopping carts and the like.) Make sure every row in the table has a timestamp for when it was created and modified, then have a single DELETE statement remove all entries before a cutoff date. (half a day, 1 week, etc.)

    -franknmonk