2012-03-02 3 views
5

안녕하세요, 이미지 다운로드를 다루는 PHP 스크립트가있는 서버입니다. 모든 이미지를 다운로드하고 나면 이미지가 압축되어 사용자가 이미지를 다운로드 할 수 있습니다.모니터 별도의 서버에있는 zip 진행

이 프로세스를 요청하려면 사용자가 웹 페이지의 버튼을 클릭 한 다음 내 웹 사이트에서이 다른 서버에이 프로세스를 시작하라고 지시하십시오. 이것은 요청을 처리하는 웹 서버가 파일 다운로드/압축을 처리하지 못하기 때문에 시간이 초과되지 않습니다.

지퍼가 완료되면 사용자에게 알리기 위해 사용자 웹 페이지에서 지퍼가 어떻게 진행되는지 알 수 있었는지 궁금합니다.

답변

2

나는 "생성 된 zip 파일"과 같은 이름이지만 다른 확장자를 가진 큐 파일을 만들 것입니다.

다운로드 파일을 만드는 서버에서 스크립트가 같은 이름이지만 상태 코드가 확장 인 다른 파일을 만들도록하십시오. (예 그것을 준비 것에 대해 진보와 123456789.DON의 의미를 123456789.PRO) 이제 .DON를 시작 파일을 만드는 전에, .PRO을이 파일 이름을 업데이트 할 수 있습니다 zip 파일을 만들고 종료 스크립트는)

웹 서버에서 PHP 스크립트를 읽는 ajax 호출을 수행합니다.이 스크립트는 파일이 존재하는지 확인합니다. 거기

파일 : 프로세스가 .PRO 파일이 시작되지 : 가공 .DON 파일이 존재 : 당신에게 얼마나 많은 서버 부하를 최대 AJAX 호출이 몇 초마다 점검 할 수

다운로드 링크를 만듭니다 필요.

0

클라이언트에서 아약스를 통해 폴링을 설정하여 매 x 초마다 진행 상황을 요청할 수 있습니다. 당신이 출력/tmp 디렉토리/파일의 진행 상황을 수있는 압축하는 PHP 스크립트에서

, 응답 PHP 스크립트에서

zip -v filename.zip file1 file2 file3 > /tmp/tmpid.txt 

처럼, 당신은 TMP 출력 파일을 읽을 수 있습니다 (예를 들어 /tmp/zip_af45d26746a4e5bf01.txt) 진행률을 계산하고 브라우저로 돌아갑니다.

+0

zip -v in php? 그 논리를 사용하면 for 루프에 모든 파일의 압축이 완료된 카운터를 추가하고 현재 항목과 전체 항목 사이의 비율을 찾고 파일에 출력하는 것이 가장 좋습니다. 그로 인해 백분율 차이 만 반환하고 그에 따라 막대를 업데이트하라는 요청을 서버에 보낼 수 있습니까? – mirugai

0

exec()를 통해 zip 파일의 상태를 폴링하는 아이디어는 나에게 큰 zip 파일을 만드는 프로젝트에 적합했습니다.

exec("zip -qdgds 10m output.zip file1.php file2.php > log_dot.txt"); 

지금 다른 아약스 스크립트 투표 (파일 크기 전체 파일과 점 * 10메가바이트 각)이 이는 zip의 창조의 실제 과정을 계산 :

나는 같은 문이 지퍼 스크립트에 사용 파일.

어쩌면 수동 도움말 다른 사람 zip-maual

관련 문제