首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用perl Dancer/plack/Starman和多个工作人员的会话

使用perl Dancer/plack/Starman和多个工作人员的会话
EN

Stack Overflow用户
提问于 2015-03-07 22:33:55
回答 2查看 426关注 0票数 0

我正在通过plack使用Starman运行一个perl Dancer应用程序(希望这是正确的描述),而且大多数情况下,这是一次无痛的体验。我最近一直在尝试让会话正常工作(非常简单的东西--我只想存储几个字符串,我使用的是会话:" simple "),当我与多个工作人员一起运行Starman时,我遇到了非常奇怪的问题。

使用以下非常简单的代码(在底部)将产生以下结果:

独立应用程序:当你点击它的时候,它会产生很好的计数器增量。

Starman -1工作人员:工作正常

Starman - 2+工作人员:会话似乎存在约1秒,并随后被销毁-计数器总是“过期”后非常短的时间。它似乎不是一个特定于工人的会话,它只是重置为零。如果您每秒钟敲一次以上的链接,它通常会永远增加(或者尽可能地让我费心测试它)。

我做错什么了吗,还是这不管用?它并不是非常关键,但是能够让简单的会话正常工作是很好的。

谢谢,

戴夫

代码语言:javascript
复制
##
## Code to reproduce via:
## plackup -D -E env -s Starman --workers=3 -p 3000 -a myapp.pl
##

get '/sessiontest' => sub {
    return(&sessiontest());
};

sub sessiontest {
  my $testcounter = session 'testcounter' || 0;
  $testcounter++;
  session 'testcounter' => $testcounter;
  info "SESSION COUNTER($testcounter)";
  my $return = <<EOF;
<html>
<body>
<a href=\"/sessiontest\">$testcounter</a>
</body>
</html>
EOF
  return($return);
}
EN

回答 2

Stack Overflow用户

发布于 2015-03-07 23:57:17

就像文档说的:

该模块实现了一个非常简单的会话后端,将所有会话数据保存在内存中。这意味着会话是不稳定的,在进程退出时不再存在。这个模块可能对测试非常有用。

我认为两个不同的工作人员不共享会话信息,因为他们在内存中都有自己的副本。

编辑

好像我太热衷于锤打了。当我在请求之间作了更大的停顿时,会话信息确实消失了。

票数 1
EN

Stack Overflow用户

发布于 2015-03-07 22:41:03

有趣的是,我刚刚重新测试了使用会话:"YAML“,它看起来工作正常-它只是简单的,似乎有问题。我打算暂时使用这个方法,但是如果有人有洞察力的话,我还是很想得到一个答案。

戴夫

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28920848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档