2012-05-31 6 views
2

평행 transmt 같은 나는 문제가 아래에 언급 있습니다. 사용자는 항상 a.com에 로그온하여 b.com, b1.com 등의 서버에있는 파일을 요청합니다. 모든 파일은 "b"로 시작하는 이름의 서버에 있습니다.PHP 다운로드 다른 서버에서 파일 및 사용자

응용 프로그램이 b1.com에 연결하여 파일을 찾습니다. 이제 b1.com에서 실제로 파일을 다운로드하고 있다는 것을 알지 못해도 b1.com에서 파일을 다운로드 할 수 있기를 바랍니다. 파일을 b 서버에서 사용자 desktop/pc로 직접 다운로드 할 수있는 방법이 있습니까? 또는 파일이 "b"에서 "a"로 다운로드되는 동안 "a"에서 "user"로 파일 전송을 시작할 수 있습니다.

먼저 전체 파일을 b에서 다운로드하고 싶지 않습니다. 파일을 전송할 때 성능에 영향을 줄 수있는 전송 시간을 두 배로 늘리므로 사용자에게 다음 a 사용자에게 전송할 수 있습니다.

이 문제를 염두에두고 해결책을 찾고 계십니까? 나는 서버 측에서 PHP를 사용하고있다. 다른 해결책도 환영합니다.

+0

ftp 스크립트 작성 – Satya

답변

1

사용 fsockopen 또는 fopen은 (ob_flush()를, 당신의 B 서버에 연결 fread를 사용하여 한 번에 파일 8킬로바이트을 다운로드 한 후 루프에서, 다운로드를 실행하는 데 파일 형식을 나타내는 및 output buffering를 사용하여 클라이언트에 헤더를 보낼) 사용자에게 8KB를 플러시하고 파일 다운로드가 완료 될 때까지 반복합니다.

또는

이 모든 것을 방지하기 위해, 당신은 아파치의 mod_proxy 모듈을 사용하여 조사 할 수 있습니다.

+1

fread/fwrite 루프 대신 stream_copy_to_stream을 사용할 수 있습니다. 하지만 당신이 말했듯이 프록시는 방법이 더 좋습니다 :) –

+0

좋은 전화 @ 잭 – Ansari