Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3128[/thread]

Config mehrer Versionen eines Projektes: mod_perl bringt die config durcheinander



<< >> 2 Einträge, 1 Seite
Gast Gast
 2004-12-20 19:23
#30968 #30968
Hallo,
ich habe einen mod_perl-Webserver auf dem ich mit mehreren Entwickelern parallel an einem Webservice arbeite. Es sind also parallel mehrere Versionen des Projektes online (für jeden Entwickler eine).
Dazu habe ich folgende Apache-Config:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<Location ~ /dev/project.*/web>
Options +Includes
XBitHack on
</Location>
<Location ~ /dev/project.*/web/+cgi-bin>
SetHandler perl-script
PerlHandler Apache::Registry
PerlModule Apache::DBI
PerlSendHeader On
Options ExecCGI +Includes
Order allow,deny
Allow from all
AllowOverride None
</Location>


Jede dieser Versionen hat Ihrer eigene Konfiguration (je eine DB pro Entwickler) mittels
require 'config.pl';
in den Scripten eingebunden.
in config.pl siehts wie folgt aus:

Code: (dl )
1
2
3
4
5
6
7
#!/usr/bin/perl
use strict;
package reportconf;
use vars qw(%c);
%c = (DB=>"myDB1"}; # oder eben myDB2 beim
#Entwickler 2
1;


Nun scheint es aber so zu sein, daß die einzelnen Projekte Ihre Konfigurationen doch teilen. Offenbar werden die nur beim ersten Start eines Prozesses ausgelesen und nicht bei jedem Start des Scriptes.

Wie kann ich das umgehen, und sicherstellen, daß jedes Script seine eigene Konfig hat?

Danke

Henning
Strat
 2005-02-10 22:19
#30969 #30969
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn es sich um Apache1.3 handelt (und es klingt ein wenig danach), dann geht das nicht so einfach, weil da alle den gleichen speicher benuetzen, und sich so auch variablen/subroutinen ueberschreiben koennen. Das einzige, was mir als loesung einfaellt ist, unterschiedliche package names zu verwenden, und auch die hauptprogramme in einen eigenen namensraum zu stellen, z.B.
package Developer1::irgendwas
package Developer2::irgendwas

erst mit apache2 kann man da auf serverebene trennen
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 2 Einträge, 1 Seite



View all threads created 2004-12-20 19:23.