0

我有一个 Ubuntu 服务器,上面有我的 Apache 和 FTP 服务器(我使用的是 Proftpd 服务器)。我有一个小型 PHP CMS,对于数据库,我使用的是 MySQL 服务器。这是我的服务器端环境。现在在客户端,我有一个 C# ftp 客户端,用于从 FTP 服务器下载文件。此外,这个 C# 客户端与我的 PHP CMS 通信。

所以简而言之,一次发生两次通信

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

所以,现在我想要的是我的一个 CMS 网页上的 ftp 传输的实时进度(进度条)。

显然,我可以做的一件事是我可以告诉我的 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 客户端下载回调函数中,只需添加一个调用即可将进度状态发送到服务器。在那里,scriptlet 会将其保存到$_SESSION['download_status']. 然后,CMS 页面上的 AJAX 调用可以检索它并定期显示它。

不要忘记同时上传 FTP 会话和异常状态(传输中断等)。

于 2013-01-14T19:38:28.287 回答