locked_user rumos-er has asked for the wisdom of the Perl Monks concerning the following question:
kernel.pl #!/usr/bin/perl ... use kernel my $kernel=new kernel; ... $self->print_header(); print $self->{pageResult}; ---------- kernel.pm package kernel; .. use CGI; use ModPerl::Registry; use ModPerl::Util; sub new { my $self={}; shift; bless($self); $self->init(); return $self; }; sub init { ... $self->{libs}->{cgi}=new CGI; ... }; sub accept_query { my $self=shift; ... #I take and proceed all CGI params from $self->{libs}->{cgi} and then +cache them in $self->{accepted_query}(hash reference). I use this met +hod for not calling CGI->param('bla') every time I need params. };
#load package sub load { my $self=shift; my $lib=shift; my $where_self=shift; my $need_reload=0; $self->{Reload}->{$lib}->{file}=$self->{config}->{root_cgi_fol +der}.$self->_package_to_module($lib); open(F, ">>".$self->{config}->{root_cgi_folder}."reload.log"); if ( $self->{Reload}->{$lib}->{utime} ) { if ( time()-$self->{Reload}->{$lib}->{utime} > 60 ) {# +we'll do reload every 60 seconds if it needed for not calling file st +at on every call my $mtime = (stat $self->{Reload}->{$lib}->{fi +le})[9]; if ($mtime != $self->{Reload}->{$lib}->{utime} + ) { $self->{Reload}->{$lib}->{utime}=$mtim +e; $need_reload=1; ModPerl::Util::unload_package($lib); print F $$." ".$self->date_format('%0 +day.%0month.%year %0hour:%0min:%0sec', $mtime)." ".$lib." - RE +LOAD !!!!!!!!!!!!!!!!!!!!!!!!\n"; } else { print F $$." ".$self->date_format('%0 +day.%0month.%year %0hour:%0min:%0sec', time())." ".$lib." - SK +IPED!!!\n"; }; }; } else { $need_reload=1; my $mtime=(stat $self->{Reload}->{$lib}->{file})[9]; print F $$." ".$self->date_format('%0day.%0month.%yea +r %0hour:%0min:%0sec', $mtime)." ".$lib." - First load\n"; $self->{Reload}->{$lib}->{utime}=$mtime; }; close(F); return 0 if $self->{loaded_libs}->{$lib} && !$need_reload; my $libobj; eval ' use '.$lib.'; $self->{libs}->{\''.$lib.'\'}=new '.$lib.'('.($where_s +elf ? '$self->{admin}':'$self').') if $need_reload; '; if ($@) { my $error=$@; undef($@); return $error; } else { $self->{loaded_libs}->{$lib}=1; return 0; #return $self->{libs}->{$lib}; }; };
| Replies are listed 'Best First'. | |
|---|---|
|
Re: few questions about ModPerl2
by perrin (Chancellor) on Nov 29, 2006 at 13:48 UTC | |
|
Re: few questions about ModPerl2
by themage (Friar) on Nov 29, 2006 at 10:45 UTC | |
by perrin (Chancellor) on Nov 29, 2006 at 19:51 UTC |