我编写了一个 Perl 脚本,它使用 WWW::Mechanize 连接到一个站点,登录然后访问该站点内的几个页面。一切都很好,但是,当我尝试访问大量页面时,脚本被杀死了。我确信这与 HTTP 服务器的配置和配置的连接限制无关。这是因为,该脚本在我自己的站点上运行。
这是我的脚本的高级概述:
$url="http://example.com";
$mech=WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
使用表单域登录网站。
现在,一旦我登录,我会连接到站点内的 URL,如下所示:
$i 是 for 循环中的迭代计数器
$internal_url="http://example.com/index.php?page=$i";
$mech->get($internal_url);
在返回的页面上执行一些操作($mech->content using HTML::TreeBuilder::XPath)
现在,我遍历连接到不同 internal_url 的 for 循环,因为 $i 的值在每次迭代中都会递增。
正如我所说,这一切都很好。然而,在大约 180 页之后,脚本被杀死了。
可能是什么原因?我已经尝试过多次。
我什至添加了一个 $mech->delete; 在 FOR 循环结束之前,以防止任何内存泄漏。
但是,唯一的问题是 $mech 维护的登录会话将因此而被破坏。
我已经尝试了多次,并且这个脚本在访问相同数量的页面后总是被杀死。
谢谢。