[英]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.