2012-03-02 44 views
5

Xin chào một máy chủ có tập lệnh PHP liên quan đến tải xuống hình ảnh. Sau khi hoàn tất tải xuống tất cả hình ảnh, nó nén chúng và sau đó người dùng có thể tải xuống.Theo dõi tiến trình nén trên máy chủ riêng biệt

Để yêu cầu quá trình này, người dùng nhấp vào nút trên trang web sau đó yêu cầu trang web của tôi thông báo cho máy chủ khác này bắt đầu quá trình này. Điều này là để các máy chủ web mà đề với các yêu cầu không đối phó với tải file/nén và nó sẽ không thời gian ra ngoài.

Tôi đã tự hỏi làm thế nào tôi có thể cho biết tiến trình của việc nén trên trang web của người dùng để thông báo cho người dùng khi quá trình nén hoàn tất?

Trả lời

2

Tôi sẽ tạo một tệp hàng đợi có cùng tên với "tệp zip được tạo" nhưng có phần mở rộng khác.

Trên máy chủ tạo tệp tải xuống, hãy để tập lệnh tạo một tệp khác có cùng tên nhưng mã trạng thái dưới dạng tiện ích mở rộng. (ví dụ 123456789.PRO nghĩa cơ bản dở dang và 123456789.DON cho nó là sẵn sàng) Các kịch bản mà làm cho các tập tin zip sau đó có thể cập nhật tên tập tin này, trước khi bắt đầu làm cho các tập tin .PRO và hoàn .DON)

Bây giờ trên máy chủ web của bạn thực hiện cuộc gọi ajax đọc một tập lệnh PHP, trong đó kiểm tra trả về nếu tệp tồn tại.

tập tin không có: quá trình không bắt đầu .PRO tập tin tồn tại: CHẾ BIẾN .DON tập tin tồn tại: link download

Cuộc gọi ajax có thể được kiểm tra mỗi vài giây, Tạo tùy thuộc vào bạn và bao nhiêu máy chủ tải bạn muốn.

0

Bạn có thể thiết lập bỏ phiếu qua ajax từ máy khách để yêu cầu tiến trình mỗi x giây.

Trong kịch bản nén php bạn có thể xuất cùng tiến tới một/tmp/tập tin, như

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

Trong kịch bản php trả lời, bạn có thể đọc các tập tin đầu ra tmp (ví dụ /tmp/zip_af45d26746a4e5bf01.txt) và tính toán tiến độ và quay lại trình duyệt.

+0

zip-in php? sử dụng logic đó sẽ là cách tốt nhất để thêm bộ đếm trong vòng lặp cho phép nén tất cả các tệp và tìm tỷ lệ giữa mục hiện tại trên tổng số mục và đầu ra cho tệp. Từ đó bạn có thể yêu cầu máy chủ chỉ trả về chênh lệch tỷ lệ phần trăm và cập nhật thanh cho phù hợp? – mirugai

0

Ý tưởng với việc bỏ phiếu trạng thái của tệp nén qua exec() là hoàn hảo cho một dự án tạo các tệp zip lớn cho tôi.

tôi đã sử dụng trong zip-kịch bản một tuyên bố như:

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

và bây giờ khác các cuộc thăm dò script ajax và tính toán (file filesize tổng thể và chấm * 10MB mỗi) quá trình thực tế của việc tạo ra các zip- tập tin.

Có thể hướng dẫn cũng giúp người khác quá zip-maual