The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン TKFP.DLLで大量ファイルのアップロードを高速にしたい
日時: 2008/07/22 13:26
名前: hiroron
参照: http://hiroron.com/

FTPのライブラリを検索していたらこちらにたどりつき試用させていただいております。

TKFP.DLL Versin: 1.3.9
環境: XP + .NET2.0 + VB2008

ファイル数4000程度をアップロードするオリジナルツールをwininet.dllで作っておりましたがどうしてもファイル一覧が取得できず、FTPライブラリを探してこちらにたどり着きました。
このような便利なライブラリの公開ありがとうございます。

オリジナルツールからwininet.dllを利用時は5分でアップロードできましたが、TKFPにおきかえたところアップロード時間が15分になってしまいました。

TIPSを読ませていただき、「複数のインスタンスで待ち受けポートを共有する」+マルチスレッドを使えば、
複数ファイルの同時アップロードができそうに思うのですが、実際にどうやったら実現できるのかわかりません。
(3〜5ファイルを同時に処理すればいままでより早くなるのではないかと思っています)

ぜひ、この複数ファイルの同時アップロードをTIPSとして教えていただけないでしょうか?

よろしくお願いいたします。

Page: 1 |

ファイル Re: TKFP.DLLで大量ファイルのアップロードを高速にしたい ( No.1 )
日時: 2008/07/22 13:45
名前: hiroron
参照: http://hiroron.com/

テスト計測したアップロード先の環境を書くのを忘れてました。

アップロード先環境: Linux 2.6.18 + proftpd 1.3.0 + ローカルでギガビットでつながってます
ファイル Re: TKFP.DLLで大量ファイルのアップロードを高速にしたい ( No.2 )
日時: 2008/07/24 07:43
名前: Toki◆pRU.c9X.EOI

マルチスレッドで複数の処理を同時実行するのはFTPライブラリの本質ではないですね

時間があれば、準備したいと思いますが、処理部分が異なるだけで、

他にいい情報があるかもしれませんよ。


手順としては

1.処理一覧をキューへ保存
2.ワーカースレッドを必要数立ち上げる
3.各スレッドでFtpClientを接続
4.スレッド毎にキューから処理を順次実行
5.キューが空になったらスレッド停止

こんなとことでしょうか


実際に行うとなると、スレッド間での排他制御や、メッセージの処理なども必要になります。

MagicMirrorではTKFP.DLLを使用して同様の処理を行っていますので、

TKFP.DLLで十分実現可能だと思います。



あと、問題の発端としてアップロード時間が長くなったようですが、

ローカル接続のようですし、FtpClientのバッファサイズの調整で、改善しませんか?
ファイル Re: TKFP.DLLで大量ファイルのアップロードを高速にしたい ( No.3 )
日時: 2008/07/26 11:16
名前: hiroron
参照: http://hiroron.com/

早速のお返事ありがとうございます。

まずはすぐに試せるバッファサイズ(SendBufferSize)の調整でテストしてみました。

デフォルト(2048) --> 15分
10240 --> 14分
51200 --> 15分
ためしにReceiveBufferSizeもSendBufferSizeも10240でテストしてみましたが14分でした。

誤差(?)といえるぐらいの時間的な変化しかありませんでした。


マルチスレッドについては処理手順を参考に、これから調べながらがんばってみたいと思います。

Page: 1 |