Perl 为什么NET::FTP上传文件如此缓慢
我的问题是使用perl将本地文件ftp到ftp服务器。问题是为什么上传速度这么慢。以下是代码:Perl 为什么NET::FTP上传文件如此缓慢,perl,ftp,Perl,Ftp,我的问题是使用perl将本地文件ftp到ftp服务器。问题是为什么上传速度这么慢。以下是代码: use strict; use warning; use NET::FTP; my $ftpserver = "10.110.143.9"; my $usr = "John"; my $passwd = "John"; sub main { my $ftp = Net::FTP->new( $ftpserver, Timeout => 200 ) or pr
use strict;
use warning;
use NET::FTP;
my $ftpserver = "10.110.143.9";
my $usr = "John";
my $passwd = "John";
sub main {
my $ftp = Net::FTP->new( $ftpserver, Timeout => 200 ) or print "Can't connect ftpserver" sleep 5;
my $rc = $ftp->login( $usr, $passwd );
unless ($rc) {
print("login failed!");
return 1;
}
print("login success");
$ftp->binary();
$ftp->put("d:\\2012.txt");
$ftp->quit;
return 0;
}
30mb的上传时间约为5分钟,而在同一台机器上使用另一个ftp客户端只需10秒左右。您应该启用
被动模式
,还可以玩块大小
(它曾经是Net::ftp
的减速源),类似这样:
my $ftp = new Net::FTP(
$ftpserver,
Timeout => 200,
Passive => 1,
BlockSize => 8192,
);
尝试将
块大小增加(或减少)
2倍,看看是否有任何变化。使用其他FTP客户端上载同一文件的速度有多快?有没有可能你的FTP服务器的连接真的那么糟糕?例如,文件大小约为30MB,使用我的程序上传到服务器大约需要5分钟,而使用另一种方式上传大约只需要10秒。FTP有两种模式;通常,如果您的ftp客户端位于可公开寻址的IP地址(不是10.x.x.x或192.168.x.x)上,则可以使用活动模式。如果不是,你会想使用被动模式。谢谢,我尝试过增加BlockSize,当BlockSize较大时,上传速度比以前快。很高兴它帮助了你。但是我同意Net::FTP
一般来说质量有点问题-它应该能够像大多数其他FTP客户机一样,在不做任何调整的情况下饱和您的连接。