perl中的Singleton CGI对象的多个实例

时间:2013-02-26 03:20:39

标签: perl mod-perl

我有一个cgi页面index.cgi和一个登录表单模板

的index.cgi

use Singleton::CGI;
use Singleton::Session;

$q = new Singleton::CGI();
$session = new Singleton::Session();
$template = HTML::Template->new(filename => 'login.tmpl');

print $q->header;
print $q->start_html("hello perl");
print $q;   # printing hash of CGI Object.
print $session;
print $template->output;
print $q->end_html;


if($q->param('submit')){

print $q->header;
print $q->start_html("hello user");
print $q;   # printing hash of CGI Object.
print $session;
print $q->param('text');
print $q->end_html;

}

login.tmpl:

<form action="/" method="post">
  <input type="text" name="text"/>
  <input type="submit" name="submit" value="submit"/>
  </form>

这是我得到index.cgi时的输出

CGI = HASH(0xbe0510)
SingletonSession = HASH(0x1e67ee60)

以及表格

接下来当我提交表格时 CGI = HASH(0xe2ac500)alnog,具有表格输入值。 SingletonSession = HASH(0x115dc7a0)

根据我的要求,我应该只获得一个会话对象。

我应该如何在应用程序中只维护一个查询和会话对象?

1 个答案:

答案 0 :(得分:3)

您的Web服务器会为其收到的每个请求执行您的脚本,因此您要求在两个甚至不同时运行的进程之间共享变量。不可能。这就是使用会话的原因,以提供持久的信息。