Perl LWP手动关闭连接

时间:2013-05-13 12:36:44

标签: perl tomcat lwp http-basic-authentication lwp-useragent

新问题:

我正在使用Perl脚本执行以下操作:

use strict;
use warnings;
use LWP 5.64;

my $browser = LWP::UserAgent->new();
$browser->credentials( 
'localhost:8080', 
'Tomcat Manager Application', 
'admin' => '123' 
);

my $app_url  = qq(http://localhost:8080/manager/list);
my $response = $browser->get( $app_url ); #this starts the Tomcat Manager Application
#do something
#end the tomcat manager application / terminate the session

有没有办法结束会话? Manager Manager的默认会话超时为30分钟。我试过的是:

my $browser = LWP::UserAgent->new();
$browser->conn_cache(LWP::ConnCache->new());

但它总是会打开一个新的会话。

我认为更改$browser->timeout不是正确的方法,因为我需要在收到回复后终止会话。

非常感谢任何帮助。


旧问题:

有没有办法使用LWP手动结束我的会话?我有类似的东西:

use strict;
use warnings;
use LWP 5.64;

my $app_url = 'htpp://localhost:8080/manager/list'
my $base_url = 'http://localhost:8080'

my $browser = LWP::UserAgent->new;
$browser->credentials( 
 'localhost:8080/manager/list',
 'Tomcat Manager Application', 
 'admin' => '123' 
);

my $response = $browser->get( $base_url ); #session does not remain open
my $respuesta = $browser->get( $app_url ); #session remains opened 
#do some processing
#and now close the connection

我想连续多次运行我的脚本,过了一段时间我在服务器上有一百万个打开的会话。

提前感谢您的任何答案。

2 个答案:

答案 0 :(得分:0)

您可以为连接设置超时:

$browser->timeout([$secs])

默认情况下,超时为180秒。您可以指定较小的值,连接将更快关闭。

答案 1 :(得分:0)

试试这个:

my $response = $browser->get( $base_url ); #session does not remain open
my $respuesta = $browser->get( $app_url ); #session remains opened 
if($respuesta->is_success){
    #do some processing
    die "OK";
}
return 1;