Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么NET::FTP上传文件如此缓慢_Perl_Ftp - Fatal编程技术网

Perl 为什么NET::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

我的问题是使用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 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客户机一样,在不做任何调整的情况下饱和您的连接。