我有一个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#客户端执行此操作?
答案 0 :(得分:0)
根据您的说法,您根本不需要与FTP服务器通信(当然,除了下载文件外)。您的FTP客户端可以将FTP传输状态上传到Web套接字(为什么它不能直接显示?),CMS可以恢复并显示在页面中。通过使用会话,您甚至无需在任何地方主动保存该信息,前提是Web套接字调用正确初始化会话cookie。
在FTP客户端下载回调函数中,只需添加一个调用即可将进度状态发送到服务器。在那里,一个scriptlet会将它保存到$_SESSION['download_status']
中。然后,CMS页面上的AJAX调用可以检索它并定期显示它。
不要忘记上传FTP会话和异常状态(转移中断等)。