2010-08-19 2 views
3

J'essaye de charger un fichier de configuration dans un hachage pendant mon PerlChildInitHandler et puis j'accède aux valeurs de PerlResponseHandler. Cependant, même si le numéro de processus est le même, il semble que les variables modifiées au cours de l'appel child_init() reviennent à leurs valeurs par défaut lorsque handler() est appelée.Pourquoi mes variables partagées sont-elles effacées entre PerlChildInitHandler et PerlResponseHandler dans mod_perl?

Le scénario de base est:

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; 

Répondre

1

Cela n'a jamais été répondu, donc finalement je me suis déplacé à l'aide du PerlPostConfigHandler, qui semblait fonctionner de façon acceptable. Je ne peux que supposer que c'est quelque chose à propos du forking qui se passe dans le PerlChildInitiHandler mais, désolé de le dire, j'ai abandonné. J'espère que cela aidera quelqu'un dans le futur.

0

Généralement, si vous voulez charger quelque chose au moment du childinit, et y accéder dans la phase de réponse, vous le bourrerez dans un paquet global (comme $ My :: variable = 'lols'). Je n'ai jamais essayé de le faire comme tu es ici. Avez-vous essayé d'utiliser notre au lieu de mon peut-être?

+0

J'ai essayé "notre" au lieu de "mon" et malheureusement n'a fait aucun progrès. J'ai fini par passer à PerlPostConfigHandler parce que quelque chose de bizarre se produisait quand la fourchette se produisait. – mrisher

Questions connexes