I am writing a perl daemon for multiple servers that will process time consuming tasks from a single mysql database. The server maintains a connection to the database gathering tasks when they are available.
Pre-forked children report to the parent process via a PIPE telling of their status 'idle' or 'busy' so the server knows which child to assign the next task to.
The task data is usually less than 128bytes and there are 20 or more child processes at anyone time.