<?xml version="1.0" encoding="windows-1252"?>
<node id="529600" title="A perl daemon" created="2006-02-11 16:43:33" updated="2006-02-11 11:43:33">
<type id="115">
perlquestion</type>
<author id="523944">
clinton</author>
<data>
<field name="doctext">
Hi all&lt;p&gt;

I need to implement a cron daemon which runs jobs such as sending emails, clearing caches, updating search indexes etc.&lt;p&gt;

The whole daemony forky thing is foreign to me. I've spent some time looking at [cpan://Proc::Daemon], [cpan://Schedule::Cron], [doc://perlipc] etc, but I'm a bit confused as to where to begin and what is possible/easy.&lt;p&gt;

Essentially, what I want to achieve is:&lt;p&gt;&lt;blockquote&gt;
&lt;code&gt;
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 &gt; max --&gt; 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
&lt;/code&gt;&lt;/blockquote&gt;

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?&lt;p&gt;

The details I can figure out, but some pointers would be appreciated.&lt;p&gt;
many thanks</field>
</data>
</node>
