nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

signals (lighttpd + mod fastcgi)

Von: Cezar (cezar91@beztlen.pl) [Profil]
Datum: 30.06.2009 16:05
Message-ID: <h2d631$o01$1@inews.gazeta.pl>
Newsgroup: pl.comp.lang.perl
Witam,

Jedna z uslug, któr± potrzebuje zaimplementowaæ musi
przyj±æ kilkaset
zapytañ na sekunde.
Wybór pad³ na fastcgi  i lighttpd .. bo dobrze o nich pisz± :)

Niestety mam pewien problem z przechwytywanim signals ... albo po prostu
czego¶ nie rozumiem.

Robie tak jak w przyk³adach:

fastcgi.server    = (
".pl" =>
((
"fastcgi.debug" => 50000,
"bin-path"      => "/var/www/http/test.pl",
"socket"        => "/tmp/lighttpd.perl.fcgi",
"check-local"   => "disable",
"min-procs"     => 1,
"max-procs"     => 5,
"idle-timeout"  => 20
))
)


Przepisa³em juz swoj wczesniejszy skrypt, który dzia³a³ na
POE::Component::Server::HTTP  na CGI:Fast  czy tez FCGI i wyszystko dzia³a
piêknie, jak oczekiwa³em je¶li chodzi o wydajno¶æ ... ale
niestety w zaden sposob nie przechytuje ani SIGTERM ani SIGUSR1.
Nawet po zabiciu/zamkniêciu lighttpd, procesy 'test.pl' zostaj± dalej
uruchomione i jedyne na co reaguj± to SIGKILL.

Ten sam efekt jest gdy uzywam przykladowego skryptu ze strony
http://www.fastcgi.com/docs/faq.html#PerlSignals :


#!/usr/local/bin/perl -w

use FCGI;
use strict;

my $count = 0;
my $handling_request = 0;
my $exit_requested = 0;

my $request = FCGI::Request();

sub sig_handler {
$exit_requested = 1;
exit(0) if !$handling_request;
}

$SIG{USR1} = \&sig_handler;
$SIG{TERM} = \&sig_handler;
$SIG{PIPE} = 'IGNORE';

while ($handling_request = ($request->Accept() >= 0)) {
&do_request;
$handling_request = 0;
last if $exit_requested;
}

$request->Finish();
exit(0);

sub do_request() {
print("Content-type: text/html\r\n\r\n", ++$count);
$request->Finish();
}


Czy kto¶ ma pomys³ co robiê ¼le lub mo¿e mi
wyt³umaczyæ dlaczego tak jest?
(i musi tak byæ) :)




[ Auf dieses Posting antworten ]

Antworten