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

perl中单例CGI对象的多个实例,perl,mod-perl,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->sta

我有一个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=散列(0xbe0510)
SingletonSession=HASH(0x1e67ee60)

连同表格

下一步当我提交表格时 CGI=带有表单输入值的哈希(0xe2ac500)alnog。 SingletonSession=HASH(0x115dc7a0)

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


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

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

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

是的,我使用会话对象来持久化数据。。使用singlton会话对象。你的评论很难理解,但我认为你只是重复了你已经说过的话。如果是这样的话,我的答案还是一样的。不可能跨流程共享变量。共享数据是可能的,但您没有说或显示任何数据。当我看到它的源代码时,不同的表单都有操作,url“/”是它的起始页。bui它不会每次都创建新的cgi和会话对象。如果您的问题不完整,请更新问题。但在您这样做之前,请记住,这两个链接都没有演示该问题。是的,我使用了会话对象来持久化数据。。使用singlton会话对象。你的评论很难理解,但我认为你只是重复了你已经说过的话。如果是这样的话,我的答案还是一样的。不可能跨流程共享变量。共享数据是可能的,但您没有说或显示任何数据。当我看到它的源代码时,不同的表单都有操作,url“/”是它的起始页。bui它不会每次都创建新的cgi和会话对象。如果您的问题不完整,请更新问题。但在你这么做之前,请记住,这两个链接都没有问题的证明。