I've read the FastCGI FAQ (http://www.fastcgi.com/docs/faq.html#Perlfork ) and it seems like thats what I need. But I can't find a way to get the FCGI::Request object.
IMHO, you don't really need that (if this old post http://stackoverflow.com/questions/2592157/whats-the-proper-way-to-fork-in-fastcgi is any indication of what you're doing )
Read Highlander: one instance at a time (Oct 00), Watching long processes through CGI (Aug 02), Proc::Background
So in your runmode parent, you brand / fork, and return a redirect response
in the child you disassociate completely, you don't return responses, you do the work, and you update the session/cache -- this should eliminate zombies