如何让Perl的HTTP :: Daemon接受多个连接?

时间:2011-02-16 13:13:23

标签: perl http daemon

我使用HTTP :: Daemon进行一些测试:

use HTTP::Daemon;
use HTTP::Status;

my $d = HTTP::Daemon->new || die;
print "Please contact me at: <URL:", $d->url, ">\n";
while (my $c = $d->accept) {
  while (my $r = $c->get_request) {
      if ($r->method eq 'GET') {
          # do some action (about 10s)
      }
      else {
          $c->send_error(RC_FORBIDDEN)
      }
    }
  $c->close;
  undef($c);
}

它工作正常,但如果我在10秒内做更多请求,则请求排队(我通过$ d-&gt;接受所有请求)

我想要的是以下内容:如果客户端启动请求,则不应排队其他任何请求 我尝试使用Listen选项,但没有成功。

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

HTTP ::守护程序不会为您解决问题,并明确告诉您in its documentation

  

此HTTP守护程序不会为您分叉(2)。你的申请,即   “HTTP :: Daemon”的用户负责分支,如果是的话   可取的。另请注意,用户负责生成   符合HTTP / 1.1协议的响应。

如果您的回答时间太长,请拨打回答。或者使用其他模块。

答案 1 :(得分:2)

你在这里有一个主题;它可以处理第一个请求或处理下一个请求。在控制返回接受之前,您无法处理新请求。