perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andy Colson <a...@squeakycode.net>
Subject Re: About config file
Date Thu, 07 Mar 2013 14:24:24 GMT
On 3/6/2013 9:00 PM, Ken Peng wrote:
> Hello,
>
> How do you setup config file in modperl web development?
> I currently use the style like a package:
>
> package Myconfig;
>
> sub new {
>      my $class = shift;
>      my $option = { key1 => 'foo', key2 => 'bar', ... };
>      bless $option,$class;
> }
>
> 1;
>
>
> Then in the modperl program:
>
> use Myconfig;
>
> my $conf = Myconfig->new;
> my $opt1 = $conf->{key1};
> my $opt2 = $conf->{key2};
> ...
>
>
> I don't know if this is a good way. Do you have suggestions?
>
> Thanks.

Here's how I do it.


use Config::General qw(ParseConfig);
use constant CONFIG => '/pub/maps/maps.conf';
my $cfgstamp;  # when config timestamp changes, reload
reloadConfig();

sub reloadConfig
{
	my $x = (stat(CONFIG))[9];
	if ($x != $cfgstamp)
	{
		%config = ParseConfig( -ConfigFile => CONFIG);
		$cfgstamp = $x;
		my $h = hostname;
		#print STDERR "reloadConfig: host = $h\n";
		if (exists($config{$h}->{debug}))
		{
			$config{debug} = $config{$h}->{debug};
		}
		if (exists($config{$h}->{reload}))
		{
			$config{reload} = $config{$h}->{reload};
		}
		if (exists($config{$h}->{persistdb}))
		{
			$config{persistdb} = $config{$h}->{persistdb};
		}


		if ($config{persistdb})
		{
			opendb();
		}
	}
}


sub handler
{
	$web = AWeb->new(shift);
	if ($config{updating})
	{
		$web->content_type("text/plain");
		$web->print("The maps are being updated and should be back soon");
		reloadConfig();
		return Apache2::Const::OK;
	}
... etc, etc,

... then finally
	if ($config{reload})
	{
		reloadConfig();
	}
	if (not $config{persistdb})
	{
		closedb();
	}
	return Apache2::Const::OK;
}



Mime
View raw message