2016-08-31 14 views
0

私のアプリケーションでは、curl.exeを外部コマンドとして実行して、FTPフォルダからファイルのリストを取得しています。私は複数のフォルダをリストにスキャンする必要がありますので、このコマンドを複数回呼び出してファイルリストをローカルディレクトリに出力しています。Curl FTP接続プール

カールftp://my-ip:port/path/1234/ --userユーザ名:パスワード--list-のみ -o C:\ localfolder。ここ\ 1234.txt

カールftp://my-ip:port/path/8910/ --userユーザ名:パスワード--list-のみ -o C:\ localfolder \ 8910.txt

したがって、各ディレクトリに1つのファイルがあります。必要なすべてのディレクトリのファイルを一覧表示するためにワイルドカードパターンを使用することはできません。パターンはなく、ランダムな整数だけです。

ほとんどの場合、私は200人のディレクターをスキャンする必要がありますが、場合によっては数千人から9000人(最大)です。私はそれが何の問題もなく完璧に働いているので、問題はありません。極端な場合を除いて、私はネットワークの不具合のために1つまたは2つのディレクトリからリストを取得しません。

今、私は最適化を考えています。ここで2つの最適化を行うことができます

私のアプリケーションレベルの最適化:curl.exeを何度も呼び出すのではなく、複数の呼び出しでダイナミックなbatファイルを作成して、アプリケーションで呼び出すことができます。実際のカールコール。

カール接続プーリング

これcurl.exeで可能であるならば、私が見ているものです私はいつか前にどこかで読んそのカールライブラリPHPのように、接続プーリングをサポートしているが、私はカールの実行は、その能力を持っているかどうかわからないです。この機能を利用できるのであれば、パフォーマンスが向上する可能性があります。

答えて

0

持続的な接続と呼ばれるセクション)のcURLのマニュアルによると:

単一のコマンドラインで複数のファイルを指定するには、指定の他の後にカール転送 それらのすべて、1を行います注文。

libcurlは 同じホストへの2回目の転送ですでに と同じ接続を使用でき、以前の転送で開いたままにしておくように、転送に永続的な接続を使用しようとします。これは大きく で、最初の転送を除いてすべての接続時間が短縮され、ネットワークの使用率がさらに向上します( )。

出典:

curl --user username:password --list-only ftp://my-ip:port/path/1234/ -o C:\localfolder\1234.txt ftp://my-ip:port/path/8910/ -o C:\localfolder\8910.txt 

ようhttps://curl.haxx.se/docs/manual.html

何かがあなたが(2つの以上のURLのために)探しているものを行う必要があります。