clinton has asked for the wisdom of the Perl Monks concerning the following question:
I need to implement a cron daemon which runs jobs such as sending emails, clearing caches, updating search indexes etc.
Essentially, what I want to achieve is:
The forked process should not share data with the parent process, and each time a job starts, it should start with a fresh slate - this I assume is an 'of course' with fork, but what if there were just SOME data that I would like to be loaded only once and shared with the forked processes, is this possible?Dispatcher daemon - allows modules to register with it - when a job is scheduled, calls the job and forks -- job tries to obtain a lock -- if it fails, count++ if count > max --> warn -- if lock obtained -- run job to completion -- appends messages to a log shared by all jobs -- unlock -- exit -- if receives a SIGINT -- stops all forked children -- exits
The details I can figure out, but some pointers would be appreciated.