繁体   English   中英

值mod_perl中的生命周期

[英]Values lifetime in 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;

我用这个下午来显示弹出窗口。 提交表单后,刷新弹出窗口。

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

我认为apache配置有问题。

问题是-如果我正确理解-是代码

my $msg = {};

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

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

HTH乔治

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM