Warum werden meine freigegebenen Variablen zwischen PerlChildInitHandler und PerlResponseHandler in mod_perl ausgeräumt?
Frage
Ich versuche, eine Konfigurationsdatei in einen Hash während meiner PerlChildInitHandler
zu laden und dann Zugriff auf die Werte aus PerlResponseHandler
. Doch obwohl die Prozessnummer die gleiche ist, wie es scheint, dass die Variablen während des child_init()
Anruf wieder zurück auf die Standardwerte geändert werden, wenn handler()
aufgerufen wird.
Das Basisszenario ist:
package StartupLog;
# the variable I'm testing
my $sticky = 0;
sub child_init {
$sticky = 1;
return 0;
}
sub handler {
warn __PACKAGE__ . " sticky = $sticky\n"; ### always says "0" but should say "1"
return 0;
}
1;
Lösung
Dies wurde nie beantwortet, so schließlich zog ich auf die PerlPostConfigHandler verwenden, die in akzeptabler Weise schien zu funktionieren. Ich kann nur es ist etwas, über das Forking übernehmen, die in dem PerlChildInitiHandler geschieht aber, sorry zu sagen, habe ich aufgegeben. Hoffe, dass dies jemand in der Zukunft hilft.
Andere Tipps
Im Allgemeinen, wenn Sie Last etwas zu childinit Zeit wollen, und greifen Sie in der Antwortphase, können Sie es in ein Paket global (wie $ My :: Variable = ‚lols‘) stopfen würde. Ich habe nie versucht, es so, wie Sie sind hier zu tun. Haben Sie versucht, unser statt meiner vielleicht mit?.