1

シナリオは次のとおりです。

  • 私のクライアントマシンは、ルーターを介して数百マイル離れたサーバーに接続されています(ある種のVPNだと思います)
  • VB6 プログラムがサーバー (マップされたドライブ) でのファイルの作成を待機しています
  • 私のvb6プログラムは、ファイルを見ると、UNCパスを介してそのファイルをローカルに取得し、ゼブラプリンターにローカルで印刷する前に、下部にテキストを追加します(これは、次のループの直後に処理するファイルのバッチです)
  • これには約 30 秒かかります (所要時間は 1 秒未満です)。
  • リモートで接続して何らかのトラブルシューティングを行うと、30 秒の遅延なしで通常の速度で印刷されます
  • AV スキャンからフォルダーのアクセス許可まで、すべてのトラブルシューティングを行う中で、マップされたフォルダーを開いてファイルがマップされたフォルダーに配置されているのを確認すると、各ファイル操作の速度/遅延がなくなるのではないかと疑い始めています。
  • 顧客がそれを実行した翌日 - 遅延が戻ってきました
  • これをテストするためにバッチが開始される直前にそのウィンドウを「開く」コードを追加することを考えていますが、それをコーディングする方法さえわかりません。

だから私の質問はこれです: Windows エクスプローラーでマップされたフォルダーを開くと、プログラムによるファイルの転送を何らかの形で高速化できますか? これは起こっていることのようですが、私の考えでは、違いはありません。

4

2 に答える 2

4

同じ問題があり、「社内」の技術者は、ネットワーク内のファイルシステムのキャッシュ (OS レベル) を指摘することができました。そのキャッシュは、非常に多くの秒 (私の場合は 15 秒) に 1 回だけ更新されます。「閉じる」も「リセット」も、ファイルを含むサーバー/PCを強制的に更新することはできません(ファイルリストボックスの.refreshでさえも)。

それで、ファイルが存在するかどうかを「Dir」でネットワーク経由で尋ねると、15 秒後に答えが返ってきます。

しかし、ファイルが存在すると仮定すると、ファイルコピーを実行し、エラーが発生するのを待ちます。驚いたことに...すぐにファイルを取得するか、すぐにエラーを取得します。

ところで、ファイルコピーを行う必要はありません (たとえば、大きなファイルの場合)。名前の変更(および元のファイル名に再度名前を変更)は、私にとって同じことをしました。

これを解決するために多くの時間を費やしましたが、OS を深く掘り下げる必要があることがわかりました (そしてそれはバージョンごとに異なります)。ローカル (つまり、サーバー上) に、彼が見るファイルを含むテキスト ファイル。そのテキストファイルには、ステーションが認識しているハードコードされた名前があります...そして、ステーションは、ネットワーク経由でファイルシステムが更新されるのを待たずに、即座にファイルにアクセスできます。

ちょっと奇妙ですが、私たちにとっては本当にうまくいきました。

于 2012-11-11T20:42:23.250 に答える
0

どういたしまして。おそらく、回避策に関する次の説明が役立つ可能性があります。

ファイルが存在する場合、ネットワーク経由ですぐに表示されます。サーバー上に新しいディレクトリが作成されると (読み取りクライアントによって作成が行われない場合)、キャッシュされたディレクトリ リストが更新されてクライアントに表示されるまでに 15 ~ 30 秒かかります (VB で)。

リモート接続プログラムは通常、このディレクトリ リスト キャッシュをバイパスします。VB でこれを行うための適切で手頃な方法は見つかりませんでしたが、回避策はうまくいきました。

現在、既知のファイル名、サーバー上に既に存在するファイル (クライアントから見えるファイル) の束を操作します。ハードコーディングされた名前のテキストファイルで、クライアントはどのファイルを読むべきかを見つけることができます。

奇妙なことは...意味のあるファイル(テキストファイルにある)を読むことは、ほとんど遅延なしでコンテンツを読むことです(私たちのテストでは1秒未満)。遅延は、ファイル名の内容ではなく、ファイル名の外観のみにあるようです。

于 2012-11-13T20:54:11.947 に答える