如何制作前台NetServer

时间:2017-09-06 10:12:58

标签: perl soap

HTTP服务器与notice: Process Backgrounded终端分离。如何让它保持前景?

代码:

#!/usr/bin/env perl

use warnings;
use strict;

use XML::Compile::WSDL11;
use XML::Compile::SOAP11;
use XML::Compile::Transport::SOAPHTTP;
use XML::Compile::SOAP::Daemon::NetServer;

my $daemon  = XML::Compile::SOAP::Daemon::NetServer->new;

my $wsdl = XML::Compile::WSDL11->new("def.wsdl");

$daemon->printIndex();

$daemon->run(
    name => 'server',
    host => 'localhost',
    port => 7111,
    min_servers => 1,
    max_servers => 1,
    min_spare_servers => 0,
    max_spare_servers => 0);

1 个答案:

答案 0 :(得分:4)

XML :: Compile :: SOAP :: Daemon :: NetServer使用Net::Server作为服务器实现。有configuration option background in Net::Server似乎相关。它默认为undef,这意味着保持在前台

  

指定服务器是否应在bind方法之后进行分叉以从命令行释放自身。默认为undef。如果设置了setsid,则进程也将是后台。

在XML :: Compile :: SOAP :: Daemon :: NetServer的文档中搜索 background 时,你会发现Configuration section,它引用了{{1设置。

  

Net :: Server的一些常规配置选项具有不同的默认值。另请参阅有关日志记录的下一部分。

background

因此,默认情况下,它设置为true值,服务器将进入后台。这应该很容易改变。

Key             Value             New default
setsid          boolean           true
background      boolean           true

现在服务器将保留在前端,不会分叉,并且很可能一次只处理一个请求。