FastCGI - perl

Alexander Sizov sizov at phys.ru
Tue Jun 19 02:51:17 MSD 2007


Приветы!
Вопрос немного не про ингингс, но иного рускогврящего места не нашел.
С недавнего времени как альтернативу мод_перлу решил попробывать связку нгингса 
и фастцги - на перле. За основу разработки был взят найденный в кода, с 
форканьем для каждого запроса, идейный кусок выглядит так:

#****************************************** CODE
use strict;
use FCGI;
use DBI;

$SIG{CHLD}='IGNORE';
$SIG{PIPE}='IGNORE';
*FCGI::DESTROY = sub {};

my $child;
my %env;

my $request = FCGI::Request(\*STDIN,\*STDOUT,\*STDERR,\%env);

while ($request->Accept() >= 0) {
    $request->Detach();
    $child = fork();

    if(!defined $child) { die "fork failed: fork table full or process limit 
reached?"; }

    if($child == 0){
        $request->Attach();
        $request->LastCall();

    print "Content-type: text/plain\r\n\r\n";

        $request->Finish();
        exit(0);
    } else { $request->Finish(); $request = 
FCGI::Request(\*STDIN,\*STDOUT,\*STDERR,\%env); }

}

#****************************************** END
Стартуется: spawn-fcgi -f /data/fcgi.pl -s /var/run/fcgi
Все работает, но с багом. После обработки каждого запроса остается незакрытым 
файловый дескриптор у родителя. Как это можно побороть? Как еще можно заставить 
фастцги параллельно обрабатывать запросы?







More information about the nginx-ru mailing list