mod_perl中的值生存期

时间:2017-01-02 13:31:07

标签: apache perl variables mod-perl

.pm文件:

package fo_condition_editor;

use utf8;
use diagnostics -trace;
use strict;
use warnings FATAL => 'all';

{...}

use Encode;

my $msg = {};

return 1;
{..}
sub ..() {
$msg->{saved} = 1;

我用这个pm来显示弹出窗口。提交表单时,弹出窗口会刷新。

在我的本地服务器中一切正常,但在其他服务器中我遇到了变量$ msg的问题。 $ msg在打印过程中为空,但是当我再次以$ msg提交时,旧的东西。

我认为apache配置存在问题。

1 个答案:

答案 0 :(得分:0)

问讯 - 如果我得到正确的 - 是代码

my $msg = {};

仅在首次需要/使用此包时执行。之后(在当前的mod_perl实例中)不再执行此操作,并且$ msg保留它对下一个请求的任何值。

有很多方法可以解决这个问题。我使用的一种模式是为我使用的每个“包/模块 - 实体”定义“拆除/重置”方法。在包本身中,我将此方法的引用推送到全局变量。在mod_perl调用的“core-Handler”中,我有一个拆卸/重置方法,它迭代注册的处理程序并调用它们来重置数据。

HTH 乔治