perl中单例CGI对象的多个实例
我有一个cgi页面index.cgi和一个登录表单模板 index.cgiperl中单例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
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和会话对象。如果您的问题不完整,请更新问题。但在你这么做之前,请记住,这两个链接都没有问题的证明。