On Monday, 12 September 2011 13:03:30 utham hoode wrote:
> Here is the problem. Both path1 and path2 are sharing same global
> variable $param.Is there any way to avoid that?. Because In the
> actual proxy program I am reading aconfiguration file and storing it
> in a global variable. For path1 and path2 configuration file is
> different. I can place the variable inside sub handler {}so that for
>  each request program loads the configuration file.I think this will
> reduce the performance.

how about

=httpd.conf=========================================
<LocationMatch "^/path1">
  SetEnv CFG /path/to/config1.conf
</LocationMatch>

<LocationMatch "^/path2">
  SetEnv CFG /path/to/config2.conf
</LocationMatch>
====================================================

=the handler========================================
my %config;

sub handler {
  my ($r)=@_;

  my $cfg=$r->subprocess_env->{CFG} or
    die "No config file configured for ".$r->uri;
  
  $cfg=($config{$cfg}||=read_cfg $cfg);
  ...
}
====================================================

Thus, the global %config is used as a cache for the configurations of the 
various URIs. The actual file is read only on the first request.

All the configurations can even be pre-populated at startup time.

Note however, that since the config is read only once it can be changed 
only by starting up a new interpreter. If that's a problem you can 
monitor file modification times for example. If I were you I'd use an 
MMapDB object.

Torsten Förtsch

-- 
Need professional modperl support? Hire me! (http://foertsch.name)

Like fantasy? http://kabatinte.net

Reply via email to