私は、3 つの異なるサーバーとして概念化できる Web ベースのファイル管理システムを設計しています。
- ユーザーがファイルを「アップロード」して管理するシステム インターフェイス (PHP に組み込まれている) をホストするサーバー (実際のファイルはここに格納されず、すべてメタ ファイルです)。
- 作業用のファイルが置かれる別のステージング サーバー。
- 作業していないときにファイルが保存されるファイルストア。
3 つのサーバーはすべて、同じ内部ネットワーク上で *nix ベースになります。Windows ベースのユーザーは、Web インターフェイスを使用して、サーバー 1 上のファイルの初期エントリを作成します。このファイルは、ユーザーのローカル ドライブからサーバー 3 に「アップロード」されます (ファイルが現在どこにも存在しない場合)。ネットワーク) または内部ネットワーク上の別のネットワーク ドライブ。
私の質問は、私がやりたいことを達成するための最良のプログラム的アプローチに関連しています。
ユーザーがネットワークからファイルをアップロードする (Web フォーム経由でソースを選択する) と、ファイルはユーザーを通過するのではなく、ネットワーク間転送としてサーバー 3 に転送されます (これは、標準の HTTP フォーム アップロードとして送信されます)。各マシンに FTP サーバーをセットアップし、場所間でファイルを FXP しようとすることはできますが、これはサーバー 1 (グローバル ネットワーク アクセスを持つ) でコマンドを実行してクロスネットワーク転送を実行するよりも望ましい方法ですか?
2 番目の問題は、これらが非常に大きなファイルであり、少なくともそれぞれ 1 ~ 2 ギガバイトであるため、転送がすぐに行われないことです。transfer のステータスをポーリングし、これを Web インターフェイスに返して、ユーザーが何が起こっているかを知る方法が必要です。
または、このアップロードをユーザーの現在のビューに対して非同期で実行することもできますが、転送のステータスを確認して完了を確認する方法が必要です。
では、FXP ソリューションを使用する場合、ポーリングはどのように実現できるのでしょうか? シェルからファイルの移動/コピー コマンドを使用する場合、任意の形式のポーリングが可能ですか? PHP/JQuery ソリューションは非常に受け入れられます。
この質問に対する私の最後の部分は、Windows ネットワーク ドライブのマッピングに関するものです。ユーザーは、任意に指定されたマップされたドライブからドライブをマップ (およびそこからファイルを選択) することができます。それらの G:\ は \server4\some\location\therein に関連付けられている可能性がありますが、おそらく、Web フォームを介してサーバーに指定されたドライブ パスは、G:\ ファイル パスのみを送信します。マップされたネットワーク ドライブの「実際のパス」を特定する方法はありますか?
ファイルが処理されているときにサーバー 3 からサーバー 2 にファイルをステージングするために、任意のソリューションが使用されます。これらの巨大なファイルが最初にユーザーのローカル マシンを通過する必要がないことに重点が置かれています。
コメントがある場合はお知らせください。不明な点がある場合は、この質問をより一貫性のあるものにするよう努めます。