2013-01-14 46 views
0

我有一臺Ubuntu服務器,我有我的Apache和FTP服務器(我正在使用Proftpd服務器)。我有一個小的PHP CMS和數據庫我使用MySQL服務器。這是我的服務器端環境。現在在客戶端,我有一個C#ftp客戶端,我用它從FTP服務器下載文件。另外,這個C#客戶端與我的PHP CMS進行通信。如何與獨立的PHP服務器通信FTP傳輸?

因此,在短期有兩個通信發生在時間

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

一個讀取並解析PROFTPD訪問日誌的PHP腳本?這可以幫助你。 – user1190992

+0

@ user1190992:但是你不認爲它會是很多I/O – ganesh

+0

@ user1190992,它不會工作;訪問日誌僅在傳輸完成時填充。所以OP不能「看到」上傳進度。 – LSerni

回答

0

從你說的話來看,你根本不需要和FTP服務器通話(當然,除了下載文件外)。您的FTP客戶端可以將FTP傳輸狀態上傳到Web套接字(爲什麼不能直接顯示它?),可以通過CMS恢復並顯示在頁面中。通過使用會話,只要Web套接字調用正確地初始化會話cookie,您甚至不需要在任何地方主動保存該信息。

在FTP客戶端下載回調函數中,只需添加一個調用來將進度狀態發送到服務器。在那裏,一個scriptlet會將它保存到$_SESSION['download_status']。 CMS頁面上的AJAX調用可以檢索並定期顯示。

不要忘了還要上傳FTP會話和例外狀態(傳輸中斷等)。