[Catalyst] code after finalize: mod_perl, testserver ok - fastcgi not

Bill Moseley moseley at hank.org
Sat Apr 7 14:20:55 GMT 2007


On Sat, Apr 07, 2007 at 11:00:19AM +0200, Josef Chladek wrote:
> 
> we try to execute some long running code after finishing the request,
> 
>     $c->response->content_type('text/html; charset=utf-8');
>     $c->res->body('blabla...');
>     $c->response->status(200);
>     $c->finalize;
>     $c->forward('very_long_running_code');
> 
> while this works perfectly when running the testserver or under  
> mod_perl, it won't work when used with apache and
> FastCgiExternalServer  /usr/local/www/catalyst/Xatalyst/script/ 
> xatalyst_fastcgi.pl -flush -host 127.0.0.1:55900

I think the standard answer is don't do that. ;)  Can you stuff the
data someplace and send a message to another non-web process to
handle the work?

I have not done this in years but, IIRC, I would fork, open STDIN and
STDOUT to /dev/null, and then call setsid().

It's interesting this is working for you with mod_perl if you are not
doing the above.  But, again, it's been years since I did this.

Hopefully, someone with a bit more knowledge of FastCGI can respond.

-- 
Bill Moseley
moseley at hank.org




More information about the Catalyst mailing list