簡體   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