[ic] centralized variable table - can it be done?
Stefan Hornburg
racke at linuxia.de
Mon Nov 14 08:37:56 EST 2005
Bruno Cantieni wrote:
> Hello all.
>
> Our client runs a merchant network of 40+ merchants/catalogs.
> All the merchants catalogs are administered centrally (individual merchants
> have no admin functions other than basic order management) and many tables
> are global using a merchant_id field to identify individual merchant
> records.
> For ease of administration we would now also like the catalogs to read their
> rsp. variables from a "global" mysql variable table (keyed by
> catalog/merchant id) rather than from individual variable tables (currently
> using variable.gdbm) on restarts/reconfigs.
> While globalizing tables such as "products" was a no-brainer, I'm at a bit
> of a loss as to how we might implement this with "variable" or of it is even
> possible.
> Any thoughts on this would be appreciated.
You can add rows from an arbritrary database to the variabls:
# variable database
ParseVariables Yes
Database central central.txt __SQLDSN__
Database central USER __SQLUSER__
Database central PASS __SQLPASS__
ParseVariables No
NoImport central
VariableDatabase central
If you need changes immediately visible, you can put the values from
"central" into the variables namespace with an Autoload routine.
Example:
Sub <<EOS
sub load_settings {
$Tag->perl({tables => 'settings_names'});
my %other_keys = (base_url => 1,
default_mo => 1,
default_rabatt_1_shop => 1,
min_amount_artikeldaten => 1,
std_email_subj => 1,
dollar => 1);
my $set = $Db{settings_names}->query({sql => 'select * from settings_names', hashref => 1});
for (@$set) {
if ($_->{settings} =~ /^organization/ || $other_keys{$_->{settings}}) {
$::Variable->{uc($_->{settings})} = $_->{value};
}
}
}
EOS
Please consider the affect on the performance.
Bye
Racke
More information about the interchange-users
mailing list