我正在通过 plack 使用 Starman 运行一个 perl Dancer 应用程序(希望这是正确的描述),而且大多数情况下这是一种无痛的体验。我最近才试图让会话工作(非常简单的东西 - 我只想存储几个字符串,我正在使用会话:“简单”),并且在运行多个 Starman 时遇到了非常奇怪的问题工作人员。
使用以下非常简单的代码(在底部)会产生以下结果:
独立应用程序:工作正常 - 单击它时计数器会增加。
Starman - 1 名工人:工作正常
Starman - 2+ 工人:会话似乎存在大约 1 秒,随后被销毁 - 计数器总是在非常短的时间后“过期”。它似乎不是特定于工作人员的会话,它只是重置为空。如果你每秒敲击链接不止一次,它通常会永远增加(或者只要我愿意测试它)。
我做错了什么,或者这只是行不通吗?这不是非常关键,但能够让简单的会话正常工作会很好。
谢谢,
戴夫
##
## 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);
}