#!/usr/bin/perl use strict; use FCGI::ProcManager; use CGI::Fast; use POSIX qw(setsid); my $PROCESSES = 1; my $SOCKET = "127.0.0.1:9090"; my $cgi; my $count = 0; # for debug !!! #&daemonize; #this keeps the program alive or something after exec'ing perl scripts BEGIN() { } END() { } *CORE::GLOBAL::exit = sub { die "fakeexit\nrc=".shift()."\n"; }; eval q{exit}; if ($@) { exit unless $@ =~ /^fakeexit/; }; &main; sub daemonize() { chdir '/' or die "Can't chdir to /: $!"; defined(my $pid = fork) or die "Can't fork: $!"; exit if $pid; setsid or die "Can't start a new session: $!"; umask 0; } sub main { my $proc_manager = new FCGI::ProcManager({ n_processes => $PROCESSES}); my $socket = FCGI::OpenSocket($SOCKET, 100); my $request = FCGI::Request(\*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket); $proc_manager->pm_manage(); while($request->Accept() >= 0){ $proc_manager->pm_pre_dispatch(); $cgi = new CGI::Fast; #$cgi = new CGI; second example !!! &website(); $proc_manager->pm_post_dispatch(); } FCGI::CloseSocket($socket); } sub website() { my $title; my $description; my $keywords; my $script = $ENV{SCRIPT_FILENAME}; if($script eq 'main'){ $title = 'Main'; $description = ''; $keywords = ''; &action_main($title,$description,$keywords); } elsif($script eq 'order'){ $title = 'Order'; $description = ''; $keywords = ''; &action_order($title,$description,$keywords); } else{ $title = 'Page not found!'; $description = ''; $keywords = ''; &page_not_found($title,$description,$keywords); } } sub header { $count++; print <<"T"; Content-type: text/html\r\n\r
| WEB-SITE!!! | ||
|
||
|
T
foreach (keys %ENV){ # this is for debug!!!
print "$_: $ENV{$_} "; } } sub end { print <<'T'; |