5

私の問題は、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 秒程度しかかかりません。

4

1 に答える 1

6

次のように、を有効PassiveModeにして、再生する必要がありますBlockSize(以前は のスローダウンの原因でしたNet::FTP)。

my $ftp = new Net::FTP(
    $ftpserver,
    Timeout => 200,
    Passive => 1,
    BlockSize => 8192,
);

BlockSize2 倍ずつ増加 (または減少) してみて、何か変化があるかどうかを確認してください。

于 2013-01-16T01:37:12.830 に答える