#!/usr/bin/perl -w # start from command-line as user = use strict; BEGIN { use FindBin qw($Bin); # warn 'BIN:'.$Bin; # set lib paths for app: use lib ( '/home/raj/perl5/lib/perl5', "$Bin/../lib", "$Bin/..", ); } use FCGI; use CGI::Fast(); use LIMS::Dispatch; use FCGI::ProcManager; # use Data::Dumper; $Data::Dumper::Useperl = 1; # prevent XS Dumper - maybe bug in 5.8.8 my $socket = FCGI::OpenSocket( '/tmp/hilis4.socket', 2 ); # path, backlog my $request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%ENV, $socket ); my $proc_manager = FCGI::ProcManager->new({ n_processes => 3 }); $proc_manager->pm_manage(); $CGI::Fast::Ext_Request = $request; while ( my $query = CGI::Fast->new() ) { # set active db to production - default is `test`: $ENV{ROSEDB_DEVINIT} = "$Bin/../config/rosedb_devinit_prod.pl"; # set flag for LIMS::_set_cgisession_options & QueryLog: $ENV{FAST_CGI} = 1; # set DBI trace: # $ENV{DBI_TRACE} = "1=$Bin/../logs/trace.log"; $ENV{RDBO_DEBUG} = 1; # switch LIMS::RDBO $Rose::DB::Object::Debug on $proc_manager->pm_pre_dispatch(); eval { LIMS::Dispatch->dispatch( args_to_new => { QUERY => $query }, default => '', debug => 0, ); }; my $err = $@; if ($err) { warn "$0 error: $err"; exit 0; # to free $dbh from stuck transaction and restart process(es) } $proc_manager->pm_post_dispatch(); } FCGI::CloseSocket( $socket ); =begin # only increments count every n_processes => $n browser refreshes my $cgi; my $count = 0; while ( $request->Accept() >= 0 ) { $proc_manager->pm_pre_dispatch(); print header(); print start_html(); print img({-src => '/static/images/logo.jpeg'}); print p( ++$count ); print end_html(); } =cut