新问题:Perl的LWP紧密结合手动
我做我的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
有没有办法来结束会话?我的管理员应用程序的默认会话超时时间为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
我想运行我的脚本很多连续四次过了一会我在服务器上有一百万打开的会话。
非常感谢您提供任何答案。
我拉起来https://metacpan.org/module/GAAS/libwww-perl-6.05/lib/LWP/UserAgent.pm并搜索 “连接”。第一次打击提到了keep_alive和连接缓存。我有一种感觉,这可能有帮助。 – innaM 2013-05-13 13:15:36
你的脚本仍在运行?据我所知,LWP :: UA不会保持持久连接,除非你特别要求它在新构造函数的选项哈希中。我假设脚本在linux上运行,你可以做一个'netstat -lnp | grep 8080'并查看是否a)有连接到端口8080的perl/script进程,以及b)该socket的状态是什么? (即.. CLOSE_WAIT,CONNECTED等)。 – 2013-05-13 13:48:24
谢谢。我认为这可能是HTTP基本身份验证问题? AFAIK基本身份验证不支持“注销”。我的假设是,perl中的退出将会终止我的连接,但我错了。这也是在Windows机器上运行。我相当肯定它与HTTP基本身份验证有关,因为对基本URL的简单GET不会使会话保持打开状态。我相应地编辑了我的帖子。 – user2236021 2013-05-13 14:15:56