Như Marc W đã chỉ ra php chỉ có thể cho bạn biết những gì bạn đã gửi từ máy chủ, không phải những gì khách hàng nhận được, do đó, sử dụng đúng php là không khởi động.
Nhưng luôn có khả năng yêu cầu người dùng xác nhận tải xuống bằng cách nhấn nút gọi kiểm tra JS bằng cách tạo mã băm MD5 và so sánh với mã băm MD5 của tệp trên máy chủ của bạn (trên máy chủ MD5 được tạo ra bởi bạn), và trên một sử dụng so sánh thành công kịch bản JS để cập nhật db của bạn hoặc sử dụng nó để gọi một tập lệnh php để làm như vậy.
Bạn luôn có thể yêu cầu họ kiểm tra tải xuống là những gì họ mong đợi và, nếu họ nhấn "có, thì tốt" thì hãy cập nhật cơ sở dữ liệu.
Đã chỉnh sửa: để trả lời nhận xét của OP.
Cảm ơn bạn, nhưng bạn không thể phụ thuộc vào tính hợp tác của người dùng. Bởi vì họ cũng phải trả tiền cho việc tải xuống, nó là tốt hơn mà tôi có tất cả các controll.I nghĩ rằng tôi sau đó sẽ cập nhật cơ sở dữ liệu khi kịch bản được truy cập. Điều đó có vẻ là đáng tin cậy nhất sau đó.
Làm thế nào về việc sử dụng điều khiển Ajax để bắt đầu và duy trì tải xuống, và khi hoàn thành xác minh tính toàn vẹn của nó và chạy bản cập nhật cho db của bạn?
Tôi khuyên bạn không nên tự động giả định khách hàng của bạn sẽ tách bạn ra, mặc dù, bất kỳ điều gì bạn chọn. Yêu cầu họ độc đáo 'nó có hiệu quả với bạn không?' và, nếu không, dẫn đến báo cáo lỗi có thể hữu ích cho bạn và họ.
Nhưng, bất kể, trong khi một số người dùng của bạn có thể nói 'không' chỉ cho bản sao bổ sung, bạn phải cân bằng chi phí so với chi phí khối lượng công việc tăng của mình để ngăn việc xảy ra. Nếu chi phí duy trì 'trung thực' vượt quá khả năng/khả năng chi phí của việc họ lấy thêm một bản sao, thì có rất ít điểm.
Nguồn
2009-10-13 23:07:21
im tìm thấy một giải pháp tốt thực hiện PHP tinh khiết: http://bytes.com/topic/php/answers/551302-how-detect-if-file-download-completed- hủy bỏ – StefanoCudini