Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FastCGI - perl
Приветы!
Вопрос немного не про ингингс, но иного рускогврящего места не нашел.
С недавнего времени как альтернативу мод_перлу решил попробывать связку нгингса
и фастцги - на перле. За основу разработки был взят найденный в кода, с
форканьем для каждого запроса, идейный кусок выглядит так:
#****************************************** 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
Все работает, но с багом. После обработки каждого запроса остается незакрытым
файловый дескриптор у родителя. Как это можно побороть? Как еще можно заставить
фастцги параллельно обрабатывать запросы?
|