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