Re: Shared var between processes

Ben RUBSON <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
On 22 Oct 2017 23:15, André Warnier (tomcat) wrote:

> On 22.10.2017 18:59, John Dunlap wrote:
>> In our case, we do not use Windows for anything. Even our desktops are  
>> Linux. We already
>> employ Redis, which performs the same function as memcache, however,  
>> this doesn't really
>> solve the problem because each virtualhost also relies on its own redis  
>> database so, even
>> in that case, we would still need a per virtualhost configuration  
>> mechanism to tell us
>> which redis database to use.
>>
>> At present, I kinda like Ben Rubson's suggestion of a read only hash in  
>> a startup script
>> which is keyed by hostname
>
> Yes, no doubt about that. But this does not answer the question : where  
> do you store this hash (or a reference to it), so that a handler, later,  
> would have access to it ?
>
> startup_script :
>
> my $big_hash = {
> 	hostname1 => { ... },
> 	hostname2 => { ... },
> 	};
> # save $big_hash "somewhere"
> exit;
>
> ... later ...
>
> sub handler {
> # how do I access $big_hash ? (where is it ?)
>
> return OK;
> }

You can use Startup.pm like this :

package Startup;
use strict;
use warnings;
use base qw(Exporter);
our @EXPORT_OK = qw(%config);
our %config;
$config{'VH1'}{'foo'} = 'nicevalue';
1;

Then in your other scripts :
use Startup qw(%config);
my $var = $config{'VH1'}{'foo'};

Or without a package, if your vars are rather simple, you could use $ENV...

Ben
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.