2013-01-14 3 views
0

나는 아파치와 FTP 서버를 가지고있는 우분투 서버를 가지고있다. (필자는 Proftpd 서버를 사용하고있다.) 나는 작은 PHP CMS를 가지고 있고 데이터베이스를 위해서 나는 MySQL 서버를 사용하고있다. 이것이 내 서버 측 환경이었습니다. 이제 클라이언트 측에서 FTP 서버에서 파일을 다운로드하는 데 사용하는 C# 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 전송의 실시간 진행 (진행 표시 줄)입니다.

분명히 내가 할 수있는 일 중 하나는 내 웹 서버 또는 웹 소켓을 사용하여 PHP 서버에 다운로드 진행을 업로드하도록 요청할 수 있다는 것입니다. 그리고 나서 FTP 전송의 진행 상황을 보여줄 수 있습니다 (기본적으로 C# 클라이언트).

하지만이 작업을하기 전에 PHP 서버에서 수행중인 작업을 PHP 서버가 확인할 수 있는지 알고 싶습니다. 이후 그들 사이에 의사 소통이 일어나지 않아서 나는 그것을 성취 할 방법을 모른다. 나는 MySQL 서버를 가지고 있으며 proftp가 MySQL 서버와 통신 할 수 있다는 것을 알고 있으며 ftp 서버가 무엇이든 저장할 수있는 미리 정의 된 테이블을 가지고 있습니다. 그러나 그것을 사용하여 실시간 진행 상황을 보여줄 수 있습니까? 이 작업을 수행하는 다른 기술이 있습니까? 아니면 C# 클라이언트에게 강제로 적용해야합니까?

+0

PROFTPD 액세스 로그를 읽고 구문 분석하는 PHP 스크립트는 무엇입니까? 그것은 당신을 도울 수 있습니다. – user1190992

+0

@ user1190992 :하지만 많은 I/O – ganesh

+0

@ user1190992가 될 것이라고 생각하지 마십시오. 작동하지 않습니다. 액세스 로그는 전송이 완료 될 때만 채워집니다. 그래서 OP는 업로드 진행을 "볼"수 없었습니다. – LSerni

답변

0

당신이 말한대로, FTP 서버와 전혀 이야기 할 필요가 없습니다 (물론 파일을 다운로드하는 것을 제외하고). FTP 클라이언트가 FTP 전송 상태를 웹 소켓에 업로드 할 수 있으며 (왜 직접 표시하지 않을 수 있습니까?) CMS에서 복구되고 페이지에 표시됩니다. 세션을 사용하면 웹 소켓 호출이 세션 쿠키를 올바르게 초기화해야만 어디에서나 정보를 적극적으로 저장할 필요조차 없습니다.

FTP 클라이언트 다운로드 콜백 함수에서 진행 상태를 서버에 보내기위한 호출 만 추가하면됩니다. 거기서, 스크립틀릿은 이것을 $_SESSION['download_status']에 저장합니다. CMS 페이지의 AJAX 호출은이를 검색하여 주기적으로 표시 할 수 있습니다.

FTP 세션 및 예외 상태 (전송 중단 등)도 업로드하는 것을 잊지 마십시오.

관련 문제