I've always had the feeling that long running applications are prone to problems like this and try to avoid them. My workaround is to have the script in a cron job which is called every minute. It basically wakes up, checks to see if there are less than a certain amount of itself running, grabs a set of tasks (and marks them as in progress), processes them, logs action, and then marks them as complete.
Lately I've been wondering if there are any disadvantages to this method, but I can't seem to think of any (bar the script start up costs). Obviously this isn't applicable for any networking based daemons.
gav^