Every invocation of the CGI has a 33% chance of forking a 'cleanup' child process
Wow .. 33%. That's pretty high. After three accesses, the odds are even that you will have run the cleanup. Your choice ..
If we become a cleanup process, somehow make sure we're the only one (-- how can I do this?)
You can use a lock file.
- Does the lock file exist? If so, someone else is already doing a cleanup.
- Create a randomly name lock file. Do more than one of them exist? If so, continue only if yours was the first one created; otherwise, delete the lock file .. someone else is already doing a cleanup.
- Do your cleanup, delete the lock file.
Cleanup process checks to see if there are any tasks past due, takes care of them and quietly exits
This is duplicating what cron does, so you may as well use their format to store tasks. I had a quick look at CPAN but didn't find anything that will handle cron format task list, but that's probably a good way to go, depending on the complexity of the task timing.
--t. alex
but my friends call me T.