0

ApacheサーバーとFTPサーバーがあるUbuntuサーバーがあります(Proftpdサーバーを使用しています)。私は小さなPHPCMSを持っており、データベースにはMySQLサーバーを使用しています。これは私のサーバー側の環境でした。クライアント側には、FTPサーバーからファイルをダウンロードするために使用するC#ftpクライアントがあります。また、このC#クライアントは私のPHPCMSと通信します。

つまり、一度に2つの通信が発生します。

1. C# client and FTP server for file transfer.
2. C# client and PHP CMS for some other work.

だから、今私が欲しいのは、私のCMS Webページの1つでのftp転送のリアルタイムの進行状況(進行状況バー)です。

明らかに、私ができることの1つは、C#クライアントにダウンロードの進行状況をWebサービスまたはWebソケットを使用してPHPサーバーにアップロードするように指示し、ftp転送の進行状況(基本的にはC#クライアントのダウンロードの進行状況)を表示できることです。

しかし、これを行う前に、PHPサーバーがFTPサーバーの動作を確認できるかどうかを知りたいだけです。彼らの間でコミュニケーションが起こらないので、私はそれを達成する方法がわかりませんか?私はMySQLサーバーを持っており、proftpがMySQLサーバーと通信できることを知っています。また、ftpサーバーが実行していることをすべて格納できる事前定義されたテーブルがあります。しかし、それを使用してリアルタイムの進捗状況を表示することは可能でしょうか?これを行うための他のテクニックはありますか、それともC#クライアントに強制する必要がありますか?

4

1 に答える 1

0

あなたの言うことから、FTPサーバーと話す必要はまったくありません(もちろん、ファイルをダウンロードすることを除いて)。FTPクライアントはFTP転送ステータスをWebソケットにアップロードでき(そしてなぜそれを直接表示できなかったのですか?)、そこでCMSによって回復され、ページに表示されます。セッションを使用することにより、Webソケット呼び出しがセッションCookieを適切に初期化する場合、その情報をどこにでも積極的に保存する必要はありません。

FTPクライアントのダウンロードコールバック関数で、進行状況をサーバーに送信するための呼び出しを追加するだけです。そこで、スクリプトレットはそれをたとえばに保存します$_SESSION['download_status']。CMSページでのAJAX呼び出しは、それを取得して定期的に表示できます。

FTPセッションと例外ステータス(転送が中断されたなど)もアップロードすることを忘れないでください。

于 2013-01-14T19:38:28.287 に答える