Schrift
[thread]3100[/thread]

mod_perl und globale Variablen



<< >> 10 Einträge, 1 Seite
Heromaster
 2004-03-02 11:52
#30565 #30565
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Wie kann ich unter mod_perl Variablen deklarieren, die in den verschiedenen Handlern und allen Apache-Threads zu sehen sind? Reicht es aus, wenn ich in einem PerlInitHandler oder in einem Startup-Script einfach Variablen mit our deklariere oder gibt es dazu etwas Besonderes zu beachten?
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
sri
 2004-03-03 10:56
#30566 #30566
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Heromaster,02.03.2004, 10:52]Wie kann ich unter mod_perl Variablen deklarieren, die in den verschiedenen Handlern und allen Apache-Threads zu sehen sind? Reicht es aus, wenn ich in einem PerlInitHandler oder in einem Startup-Script einfach Variablen mit our deklariere oder gibt es dazu etwas Besonderes zu beachten?[/quote]
Wenn die Variablen nur lesbar sein sollen reicht es.
Heromaster
 2004-03-03 16:16
#30567 #30567
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich glaube, das reicht nicht. Ich habe vor, in einem PerlInitHandler meine Konfigdateien zu parsen und diese in einem globalen Hash zu speichern. Ändert man die Einstellungen, dann soll der Hash auch mit den neuen Werten geändert werden.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
pq
 2004-03-03 17:14
#30568 #30568
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
das geht nicht; dann musst du die datei neu einlesen. (gehe jetzt davon
aus, dass mod_perl so eingestellt ist, dass mehrere prozesse laufen).
wenn man eine variable dann in einem prozess ändert, bekommen die
anderen nichts davon mit.
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
Heromaster
 2004-03-03 18:26
#30569 #30569
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich arbeite mit mod_perl unter Windows. Apache arbeitet nur mit Threads.

edit: Deswegen müsste es theoretisch gehen, das alle Threads den geänderten Wert "mitbekommen". Ich weiß nur nicht wie.\n\n

<!--EDIT|Heromaster|1078331374-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
ptk
 2004-03-03 19:14
#30570 #30570
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
threads::share?
Strat
 2004-03-03 23:04
#30571 #30571
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
apache 1.3 oder 2?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Heromaster
 2004-03-04 11:04
#30572 #30572
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Es ist ein Apache 1.3 mit mod_perl 1.29 und Perl 5.8.2 unter Windows.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
Strat
 2004-03-04 19:57
#30573 #30573
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
da ist mir kein weg bekannt, das direkt zu machen.

Andere Ideen:
Die Config mit require einbinden und in der httpd.conf LoadModule Apache::StatINC verwenden (nachteil: braucht ein bisschen Laufzeit, weil jedes Modul vor dem Laden ueberprueft wird, ob sich da was geaendert hat)

Nach jeder Aenderung apache restarten (apachectl restart) ?

apache 1.3 ist unter windows jedoch nicht fuer produktionszwecke gedacht, weil er praktisch seriell laeuft (also mod_perl nur 1 thread, d.h. die einfache Verwendung globaler Variablen wuerde in der standardkonfiguration witzigerweise unter Win32 doch funktionieren, aber unter Linux/Unix bekommst du dann Probleme, weil da in der Regel mehr Prozesse laufen)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Heromaster
 2004-03-05 11:03
#30574 #30574
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ah, danke, genau das wollte ich wissen :). Ich weiß, das Apache 1.3.x nicht als Produktionsserver in einer Windowsumgebung laufen sollte, allerdings läuft HTML::Mason zur Zeit nur darunter. Und da ich Linux nicht zum Laufen bekomme, musste ich halt auf Windows umsteigen. Das ist aber kein Problem, da es (solange ich noch an dem Projekt arbeite) nicht mehr zur Portierung nach Linux kommt.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
<< >> 10 Einträge, 1 Seite



View all threads created 2004-03-02 11:52.