为什么我的共享变量在mod_perl中的PerlChildInitHandler和PerlResponseHandler之间被清除?

时间:2010-08-19 07:24:08

标签: perl apache apache2 mod-perl mod-perl2

我正在尝试在PerlChildInitHandler期间将配置文件加载到哈希中,然后从PerlResponseHandler访问值。但是,即使进程号相同,child_init()调用期间变量的变化似乎也会在调用handler()时恢复为默认值。

基本情景是:

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;

2 个答案:

答案 0 :(得分:2)

这从未得到过回答,所以最终我继续使用PerlPostConfigHandler,它似乎可以接受。我只能假设这是关于在PerlChildInitiHandler中发生的分叉的事情,但是,遗憾地说,我放弃了。希望这可以帮助将来的某个人。

答案 1 :(得分:0)

通常,如果你想在childinit时加载一些东西,并在响应阶段访问它,你就可以将它填充到一个全局包中(比如$ My :: variable ='lols')。我从来没有尝试过像你这样的方式。你尝试过使用我们而不是我的吗?