免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: superdoctor
打印 上一主题 下一主题

Perl CGI Session,要求加精 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-02-07 10:35 |只看该作者

猎头招聘

如果你是PERL高手,请联系我,我是一家美资猎头。目前受一家世界级的软件公司委托找寻Senior Unix Developer,需要懂PERL,熟悉HTML, CGI, XML,熟悉webservers或sockets等等。薪资优厚。如有意者请加MSN:sessior@hotmail.com或致电13916394366陈先生

论坛徽章:
0
32 [报告]
发表于 2010-02-11 00:51 |只看该作者
最近看到很多帖子都是关于Perl CGI Session的使用的,在此算是统一回复罢

正确的代码如下(1.pl)


(2. ...
superdoctor 发表于 2005-01-13 15:08



假如web client请求2.pl的时候,并没有向2.pl提交sid,或者提交一个错误的sid,那么tmp目录下不是会建立了好多多余的session data file?

论坛徽章:
0
33 [报告]
发表于 2010-02-11 18:06 |只看该作者
只要懂了session的工作流程和CGI的工作过程。

CGI::Session是不难使用的。在CGI程序中,每次要恢复session,我的恢复session程序是这样写的。

  1. sub restore_session
  2. {
  3.    my $cookies = fetch CGI::Cookie;
  4.    my $s       = $cookies->{'sessionid'};
  5.    my ($tmpid, $tmpsession);
  6.    my $domain;
  7.    $tmpid  = $s->value() if $s;
  8.    return 0 if($tmpid eq '');
  9.    $tmpsession   = CGI::Session->load($tmpid);
  10.    return 0 if !defined($tmpsession);
  11.    return 0 if $tmpsession->is_expired();
  12.    return 0 if $tmpsession->is_empty();
  13.    $sessionid = $tmpid;
  14.    $session   = $tmpsession;
  15.    return 1;
  16. }

复制代码
加入了判断是否过期的代码,恢复sessionid和session两个变量。
在后面的应用中,只需要判断session是否为空,不为空就取参数值即可。

论坛徽章:
0
34 [报告]
发表于 2010-02-11 18:21 |只看该作者
我比较关注session有时候会异常丢失的解决方案。

论坛徽章:
0
35 [报告]
发表于 2010-02-12 11:59 |只看该作者
我比较关注session有时候会异常丢失的解决方案。
2gua 发表于 2010-02-11 18:21



just by guess:

1. 服务器采用集群模式,而调度器又没有准确的保持session持续性。
2. session文件损坏或丢失。
3. session放在数据库的话,有可能数据库异常而导致无法读取。

总的来说我还没碰到过。
但有个问题是session文件的清理,目录下sess_文件会越来越多,还要搞个脚本定期清理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP