twerq has asked for the wisdom of the Perl Monks concerning the following question:

Fellow Monks,

I'm building a CGI::Application based website which requires some special functionality outside the normal 'run-modes'. It's basically a cleanup routine, but I'm not sure the best way to fire it so that it only gets run once (daily, or thereabouts), and I'm trying to avoid a system scheduler (cron, or the like).

Ideally, I'd like something like this:
  • Every invocation of the CGI has a 33% chance of forking a 'cleanup' child process
  • If we become a cleanup process, somehow make sure we're the only one (-- how can I do this?)
  • Cleanup process checks to see if there are any tasks past due, takes care of them and quietly exits.

    ...but this approach seems pretty ghetto, and I'm sure I'm not the first person to try something like this. SuperSearch isn't yielding much, but maybe I'm using the wrong search terms.

    Thanks in advance,