Schrift
[thread]3227[/thread]

Globale Variablen: Wie verwende ich globale Vars (DBI)

Leser: 1


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Magic
 2007-01-10 14:41
#30320 #30320
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,
ich stehe vor einem üblen Problem. Ich muss dummerweise, auf die Schnelle, ein ganzes Script auf mod_perl umbauen, da die Accounts auf Domainbox ausnahmslos unter mod_perl laufen. Alternativ könnte ich nur noch die gesamte Site in den cgi-bin Ordner kopieren.

Wäre auch alles kein Problem, wenn ich nicht viel mit globalen Variablen im Script arbeiten würde. Diese benutze ich hauptsächlich für Konfigurationeinstellungen und auch das Datenbankobjekt.
Wo ich vorher aus den Modulen auf $main::dhb zugegriffen habe, bekomme ich jetzt nur ne leere Variable.

Habe schon das gesamte Web abgegrast aber keine hilfreiche info gefunden.

Wie komme ich an die globalen Vars aus meinem Hauptscript dran?

Grüße,
Stefan
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
GwenDragon
 2007-01-10 15:02
#30321 #30321
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
[quote=Magic,10.01.2007, 13:41]Wo ich vorher aus den Modulen auf $main::dhb zugegriffen habe, bekomme ich jetzt nur ne leere Variable.

Wie komme ich an die globalen Vars aus meinem Hauptscript dran?[/quote]
Nur zum Verständnis, ob wir die gleichen Begriffe verwenden: 1. Was verstehst du unter Module? Packages? .pm-Dateien?
2. Was meinst du mit global?
3. Wie hast du denn die Variablen in main definiert?
bloonix
 2007-01-10 15:03
#30322 #30322
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Soweit ich weiß, stellt mod_perl die gleichen Umgebungsvariablen zur
Verfügung wie mod_cgi. Kann das hier jemand bestätigen?\n\n

<!--EDIT|opi|1168434259-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2007-01-10 15:13
#30323 #30323
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe hier ein paar Links zu Lesestoff gepostet...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-01-10 15:22
#30324 #30324
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
[quote=opi,10.01.2007, 14:03]Soweit ich weiß, stellt mod_perl die gleichen Umgebungsvariablen zur
Verfügung wie mod_cgi. Kann das hier jemand bestätigen?[/quote]
Es geht hier um Varaibelen im Hauptskript, nicht um die aus @ENV!
Magic
 2007-01-10 15:48
#30325 #30325
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also wenn ich hier von Modulen spreche, meine ich natürlich selbst erstellte Module, in dem Fall Plugins für einen Online-Shop.
In den Modulen greife ich, wenn der Shop normal läuft, über $main::VARNAME auf verschiedene Variablen zu, unter anderem die Konfiguration oder auch das Datenbankobjekt.
Unter mod_perl funktioniert das nicht mehr.
Das Ganze macht prinzipiell nur mit globalen Variablen Sinn, da sonst ja für jedes Plugin die Datenbankverbindung hergestellt und die Konfiguration für jeden Plugin (bis zu 10) einzeln aus der Datenbank gelesen werden müsste. Performencetechnischer SuperGAU also.

Grüße,
Stefan\n\n

<!--EDIT|Magic|1168436930-->
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
pq
 2007-01-10 16:20
#30326 #30326
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Magic,10.01.2007, 14:48]Das Ganze macht prinzipiell nur mit globalen Variablen Sinn, da sonst ja für jedes Plugin die Datenbankverbindung hergestellt und  die Konfiguration für jeden Plugin (bis zu 10) einzeln aus der Datenbank gelesen werden müsste.[/quote]
nein, da hast du einen denkfehler.
subroutinen in perl kannst du argumente uebergeben.
globale variablen in mod_perl sind immer fehlerträchtig und sollten
möglichst vermieden werden.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Magic
 2007-01-10 16:29
#30327 #30327
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
ich weiss nicht, aber es ist meines Erachtens nach fehlerträchtiger, eine globale variable, wie z.b. ein Hash mit Konfiggedöns über 20 Funktionen immer wieder weiterzureichen, als immer auf die selbe variable zurückzugreifen.
Gerade bei den Plugins käme ein enormer Aufwand hinzu, jedes mal die Variablen zu übergeben.
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
pq
 2007-01-10 16:49
#30328 #30328
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Magic,10.01.2007, 15:29]ich weiss nicht, aber es ist meines Erachtens nach fehlerträchtiger, eine globale variable, wie z.b. ein Hash mit Konfiggedöns über 20 Funktionen immer wieder weiterzureichen, als immer auf die selbe variable zurückzugreifen.[/quote]
wenn du meinst.
config global zu halten ist ja ok, denn da wird ja auch nichts
dran verändert.
alles andere solltest du übergeben. du musst ja nicht jede variable
einzeln übergeben, sondern kannst dir ein passendes objekt
ausdenken, dass die gewünschetn variablen beinhaltet.
aber wie gesagt, wenn du meinst, nimm halt globale variablen. aber dann
denk auch an die konsequenzen. globale variablen überleben halt
einen request und sind dann beim nächsten request immer noch da.\n\n

<!--EDIT|pq|1168440688-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Magic
 2007-01-10 16:59
#30329 #30329
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=pq,10.01.2007, 15:49]config global zu halten ist ja ok, denn da wird ja auch nichts
dran verändert. alles andere solltest du übergeben.[/quote]
Ich rede hier ausschließlich von globalen Variablen, die NIE verändert werden. So halt die Konfiguration, das Datenbankhandle und noch ein Objekt, welches unverändert von mehreren Funktionen benutzt wird, ähnlich einem CGI-Objekt.
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2007-01-10 14:41.