用于访问网页的Perl脚本

时间:2011-10-05 07:12:57

标签: perl testing webpage

我有一台服务器,我可以从中访问网页。我想测试几个用户(比如60000个用户)同时访问同一个网页时的服务器反应。 我正在寻找一个脚本来做这个,perl脚本会更好,

以下是我尝试过的代码

#!c:\\perl\\bin
use strict;
use WWW::Mechanize;
my $url = "http://www.cpan.org";
my $searchstring = "WWW::Mechanize";
my $mech = WWW::Mechanize->new();
while (i == 60000)
{
$mech->get($url);
i++;
}

但是这个脚本一次访问url 1,但我需要同时访问。

4 个答案:

答案 0 :(得分:6)

您可以使用ab。使用其并发(-c)和请求数(-n)选项。

答案 1 :(得分:4)

如上所示,您的代码甚至无法编译。如果您向我们提供您正在使用的确切代码,而不是键入以重新键入并添加拼写错误,那么人们会更容易帮助您。

要让您的代码进行编译,我必须在您的程序中使用$i之前声明$并添加i。我最终得到了这个:

#!/usr/bin/perl

use strict;
use WWW::Mechanize;
my $url = "http://www.cpan.org";
my $searchstring = "WWW::Mechanize";
my $mech = WWW::Mechanize->new();
my $i;
while ($i == 60000) {
  $mech->get($url);
  $i++;
}

你说循环只执行一次。这不是真的。循环根本没有执行。循环上的条件是$i == 60000。第一次检查此条件时,$i未定义,因此条件为false并跳过循环。

我想你可能想要$i <= 60000

但正如艾伦指出的那样,使用像ab这样的现有工具会好得多。

答案 2 :(得分:2)

您可以use Perl itself to launch your script 6000 times in parallel或编写一个(或多个).BAT文件或类似的Windows脚本来启动perl脚本。

小心清楚地理解how to execute stuff in detached mode under Windows

(当然你必须删除原始脚本中的while循环。)

答案 3 :(得分:1)

ab已被提及,但仅针对网站的根页(/)进行测试。我们发现siege在复制实际负载时更有用,因为我们能够测试从我们的实时访问日志中获取的一长串URL(10,000左右)......