|
|
| Populärast Webhotell Epost Domän Egen server Bredband |
| Hemsida PHP ASP Java Databas Unix Allmänt CGI Statistik |
Snabbare script genom FastCGI istället för vanliga CGILäs mer om FastCGI på www.fastcgi.com. FastCGI är ett sätt att få till något snabbare och effektivare än vanliga CGI-script. Istället för som Suexec CGI-script låta webservern forka minst två gånger för varje ny websida som skall visas så ligger FastCGI-script kvar på servern och svarar på flera frågor. Det drar mycket mindre resurser och går snabbare. Här är ett exempel på ett litet FastCGI-script. Scriptet inte får ligga under /cgi-bin eftersom webservern behandlar allting som ligger där som vanliga CGI-script oavsett ändelse. Prova lägg det som ~/public_html/mindomän.com/simple.fcgi och anropa det som http://www.mindomän.com/simple.fcgi. #!/usr/bin/perl
use FCGI;
my $counter = 1;
while (FCGI::accept() >= 0) {
print "Content-type: text/html\n\n$counter\n";
$counter++;
}
Om man har ett gäng vanliga CGI-script som man vill göra om till FastCGI så kan det löna sig att istället för att byta rakt av istället skapa ett FastCGI-script och ge det olika argument. Då behöver inte lika många FastCGI-script startas vilket går snabbare och drar mindre internminne. Istället för att ha slumpbild1.pl, slumpbild2.pl och slumpbild3.pl så kan man alltså ha slumpbild.fcgi?nr=1, slumpbild.fcgi?nr=2 och slumpbild.fcgi?nr=3 istället. Detta script använder modulen CGI::Fast till Perl istället för FCGI. Läs mer om hur den fungerar genom att skriva man CGI::Fast när du loggat in via ssh på Levonlines maskiner. man CGI rekommenderas också. Om man vill prova nya versioner av sitt script så måste man avsluta den pågående FastCGI-processen på servern. Exemplet nedan avslutar när det får ett visst argument.
#!/usr/bin/perl
use CGI::Fast qw(:standard);
my $counter1 = 0;
my $counter2 = 0;
my $counter = 0;
while ($query = new CGI::Fast) {
print header;
print
h1("Fast CGI Rocks"),
"Invocation number ",b($counter++),
" PID ",b($$),".",
hr;
if ($query->param('nr') eq "1") {
$counter1++;
} elsif ($query->param('nr') eq 'exit') {
print "avslutar... ";
print 'kör igen';
exit;
} else {
$counter2++;
}
print '
Ibland vill man låta sina FastCGI script ta hand om signaler. Här kan man läsa mer om det på FastCGIs hemsida: http://www.fastcgi.com/docs/faq.html#PerlSignals. Fick du svar på din fråga? |
CGI 136 CGI-script |