Tôi đang sử dụng tiện ích mở rộng tiến trình tải lên PHP để truy xuất thông tin về các tệp đang được tải lên hệ thống web của tôi. Tuy nhiên đối với các tệp lớn hơn 2 GB tổng số byte và thời gian các trường còn lại đang được trả lại dưới dạng số âm.Tiến trình tải lên tiện ích mở rộng PHP - trả về tổng số byte âm và thời gian còn lại
Apache đã được thiết lập để đảm bảo rằng các tệp có kích thước tối đa 3 GB có thể được tải lên trang web. Tôi đã thử nghiệm này và nó hoạt động. Tuy nhiên nó hoàn toàn là báo cáo đang quay trở lại không chính xác.
Tôi đã tự hỏi liệu điều này có liên quan đến giới hạn về giá trị PHP hay không và những gì có thể được thực hiện để khắc phục. Tôi tin rằng hệ thống đang sử dụng số nguyên 64 bit. Như các chương trình sau:
echo "PHP_INT_MAX: " . PHP_INT_MAX;
// PHP_INT_MAX: 9223372036854775807
Dưới đây là một số thông tin thêm về cách thức hoạt động của thanh tiến trình và được cài đặt: http://www.ultramegatech.com/blog/2010/10/create-an-upload-progress-bar-with-php-and-jquery/
Để có được thông tin mà tôi chỉ cần gọi hàm mở rộng:
$status = uploadprogress_get_info($unique_form_id);
nào trả lại tổng số byte, thời gian chờ ước tính, byte hiện tại và nhiều thứ khác như được hiển thị bên dưới (với tổng số byte âm):
array(11) {
["upload_id"]=> string(32) "ec75a30c24177ec1579aea93b56224f2"
["fieldname"]=> string(9) "comp_data"
["filename"]=> string(15) "Size_2-09GB.zip"
["time_start"]=> string(10) "1325851749"
["time_last"]=> string(10) "1325851758"
["speed_average"]=> string(5) "93011"
["speed_last"]=> string(6) "112618"
["bytes_uploaded"]=> string(6) "837105"
["bytes_total"]=> string(11) "-2048166056"
["files_uploaded"]=> string(1) "1"
["est_sec"]=> string(9) "-76260228"
}
Cập nhật (ngày 6 tháng 1 năm 2012): Tôi cũng đã liên hệ với nhà phát triển tiện ích mở rộng này để xem họ có thể chia sẻ bất kỳ thông tin chi tiết nào không.
Cập nhật (ngày 09 Tháng 1 2012): Nhà phát triển của phần mở rộng đã đáp lại chỉ ra rằng có một vé hiện có liên quan đến vấn đề này: https://bugs.php.net/bug.php?id=59918
Cập nhật (ngày 16 tháng 1 2012): Đã quản lý để thoát khỏi các giá trị âm được trả về bởi phần mở rộng. Tuy nhiên con số được trả lại là cách tắt số byte thực tế so với những gì Windows nói nó nằm trong cửa sổ thuộc tính.
Bạn nhận và hiển thị các tệp như thế nào? – ManseUK
Số âm có vẻ giống như một vòng tròn số nguyên. Có phải tệp có liên quan đến gần hoặc trên 2GB không? – hakre
Có tệp lớn hơn 2GB như được nêu trong câu hỏi trên. – diggersworld