Các cân nhắc bảo mật không thay đổi bằng cách thay đổi các cài đặt này. Tuy nhiên, đối với hiệu suất, điều sau đây là hợp lệ:
Nghệ thuật phục vụ người dùng một cách biểu diễn là cung cấp đủ khả năng cho những gì được yêu cầu bởi tổng số người dùng của bạn. Chuyển điều này thành các ví dụ trên cài đặt của bạn sẽ giống như:
10 Người dùng tải lên 950 MB sẽ yêu cầu bạn phục vụ 9,5 GB Băng thông và thông lượng I/O [được ví dụ: Ipacted bởi tốc độ đĩa] theo cách thực hiện. Tôi với tư cách là người dùng có thể có thể sống với việc tải lên 950 MB trong 1 phút, nhưng sẽ không hài lòng với việc tôi mất một giờ.
100 người dùng tải lên 950 MB sẽ yêu cầu bạn phục vụ 95 GB ...
1000 người dùng tải lên 950 MB sẽ yêu cầu bạn phục vụ 950 GB ... ...
Nguyên nhân không phải tất cả người dùng của bạn đều có tối đa mọi lúc và thậm chí tải lên đồng thời có thể bị hạn chế. Tuy nhiên, các thiết lập tối đa này thêm vào ngăn xếp rủi ro của bạn. Vì vậy, tùy thuộc vào đặc điểm sử dụng của bạn và ressource của bạn nhét các cài đặt này có thể hợp lệ.
Tuy nhiên, tôi cho rằng bạn đã đưa ra những ví dụ cực đoan và muốn tìm hiểu về ý nghĩa.
Khi tôi Google "Tối ưu hóa Php Memory_Limit" Tôi nhận được điều này: //softwareengineering.stackexchange.com/questions/207935/benefits-of-setting-php-memory-limit-to-lower script
Rõ ràng bạn có thể làm tương tự với các cài đặt khác.
Trong diễn đàn, bạn có thể tìm thấy rất nhiều lời thề chống lại việc thiết lập các giá trị cấu hình đó cao như vậy. Tuy nhiên, có điều này trong môi trường, trong đó việc sử dụng Ressource được quản lý cẩn thận trên các lớp truy cập khác [ví dụ: hạn chế số lượng người dùng tải lên thông qua các quyền trong ứng dụng] đã làm việc rất tốt cho tôi.
Chào mừng bạn đến với một hướng dẫn về cách tải lên các tệp lớn trong PHP. Ngày xửa ngày xưa trong thời kỳ đồ đá của internet, tải lên có thể quản lý được mà không cần các tệp lớn. Nhưng những ngày này, chúng ta phải đối phó với tất cả các loại tệp quá khổ và cơ chế tải lên truyền thống của Cameron chỉ có thể xử lý nó. Để đối phó với các tải lên lớn trong PHP, có một vài lựa chọn thay thế có thể:upload_max_filesize
trong php.ini.
Nhưng làm thế nào để mỗi phương pháp này hoạt động? Đọc về các ví dụ!
Tôi đã bao gồm một tệp zip với tất cả mã nguồn khi bắt đầu hướng dẫn này, vì vậy bạn không phải sao chép mọi thứ, hoặc nếu bạn chỉ muốn đi thẳng vào.
MỤC LỤC
Tải xuống & ghi chú
Đầu tiên, đây là liên kết tải xuống đến mã ví dụ như đã hứa.
Ghi chú nhanh
- Có 3 bộ ví dụ trong tệp zip.
- ________ 9 & NBSP; Điều chỉnh cài đặt PHP cơ bản.
0 Tải lên khối.php_value upload_max_filesize 150M php_value post_max_size 150M php_value max_input_time 300 php_value max_execution_time 300
- ________ 11 & nbsp; Tải lên có thể tiếp tục.
- Để tải lên có thể tiếp tục, hãy cài đặt Trình soạn thảo và sử dụng nó để lấy thư viện phía máy chủ PHP trước-
2.php_value upload_max_filesize 150M php_value post_max_size 150M php_value max_input_time 300 php_value max_execution_time 300
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với toàn bộ thế giới, nếu bạn cần câu trả lời khẩn cấp, vui lòng kiểm tra danh sách các trang web của tôi để nhận trợ giúp lập trình.
Mã hóa ví dụ Tải xuống
Nhấn vào đây để tải xuống tất cả các mã nguồn ví dụ, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên đó nếu bạn muốn.
Tải lên lớn trong PHP
Phương pháp 1] Tinh chỉnh cài đặt PHP
1a] Cập nhật Php.ini
php.ini
upload_max_filesize = 150M
post_max_size = 150M
max_input_time = 300
max_execution_time = 300
Đây là phương pháp dễ nhất cho các bạn đang xử lý các tải lên có thể quản lý được - chỉ cần thay đổi kích thước tệp được phép tối đa trong Php. & NBSP; Có 4 cài đặt để xem:
upload_max_filesize
- Kích thước tệp tải lên tối đa được phép.
4 - Kích thước dữ liệu bài cho phép tối đa được phép.php_value upload_max_filesize 150M php_value post_max_size 150M php_value max_input_time 300 php_value max_execution_time 300
5 - Thời gian đầu vào cho phép tối đa.php_value upload_max_filesize 150M php_value post_max_size 150M php_value max_input_time 300 php_value max_execution_time 300
6 - Thời gian tối đa cho phép các tập lệnh được phép chạy.php_value upload_max_filesize 150M php_value post_max_size 150M php_value max_input_time 300 php_value max_execution_time 300
Nhưng tất nhiên, tôi sẽ không khuyên bạn nên thay đổi tệp
php_value upload_max_filesize 150M
php_value post_max_size 150M
php_value max_input_time 300
php_value max_execution_time 300
7 trực tiếp. Điều này sẽ ảnh hưởng đến toàn bộ máy chủ và tất cả các trang web khác của bạn là tốt.1b] Cập nhật tệp HTACCESS
.htaccess
php_value upload_max_filesize 150M
php_value post_max_size 150M
php_value max_input_time 300
php_value max_execution_time 300
Nếu bạn không có quyền truy cập vào
php_value upload_max_filesize 150M
php_value post_max_size 150M
php_value max_input_time 300
php_value max_execution_time 300
7 hoặc chỉ muốn áp dụng các cài đặt cho một trang web - cũng có thể thay đổi cài đặt bằng cách tạo tệp php_value upload_max_filesize 150M
php_value post_max_size 150M
php_value max_input_time 300
php_value max_execution_time 300
9. Người dùng IIS và Nginx, bạn sẽ cần thực hiện một số nghiên cứu của riêng bạn.1c] Tải lên!
1c-upload.php
1D] Bộ ini?
Đối với các bạn đang nghĩ đến việc sử dụng
0 để thay đổi kích thước tải lên - hãy lưu ý rằng theo chỉ thị php.ini chính thức, upload_max_filesize
chỉ có thể thay đổi trong
2. Có nghĩa là, nó chỉ có thể được điều chỉnh trong tệp php_value upload_max_filesize 150M
php_value post_max_size 150M
php_value max_input_time 300
php_value max_execution_time 300
7 hoặc php_value upload_max_filesize 150M
php_value post_max_size 150M
php_value max_input_time 300
php_value max_execution_time 300
9;
5 sẽ không hoạt động.Phương pháp 2] Tải lên khối
2a] HTML & JavaScript
2a-chunk.html
// [C] INITIALIZE UPLOADER
window.onload = [] => {
// [C1] GET HTML FILE LIST
var list = document.getElementById["list"];
// [C2] INIT PLUPLOAD
var uploader = new plupload.Uploader[{
runtimes: "html5",
browse_button: "pick",
url: "2b-chunk.php",
chunk_size: "10mb",
init: {
PostInit: [] => { list.innerHTML = "Ready"; },
FilesAdded: [up, files] => {
plupload.each[files, [file] => {
let row = document.createElement["div"];
row.id = file.id;
row.innerHTML = `${file.name} [${plupload.formatSize[file.size]}] `;
list.appendChild[row];
}];
uploader.start[];
},
UploadProgress: [up, file] => {
document.querySelector[`#${file.id} strong`].innerHTML = `${file.percent}%`;
},
Error: [up, err] => console.error[err]
}
}];
uploader.init[];
};
- Chỉ có 2 yếu tố HTML ở đây.
6 Tải lên danh sách tệp và tiến trình.
7 Nhấp để chọn tệp để tải lên.
- Đội trưởng rõ ràng. Tải plupload từ CDN.
- Bắt đầu plupload trên tải trang. Sẽ không giải thích từng dòng, nhưng về cơ bản, điều này bắt đầu tải lên ngay sau khi chọn một tệp.
Đó là ý chính của nó, đọc tài liệu chính thức [liên kết trong phần bổ sung bên dưới] nếu bạn cần nhiều tùy chỉnh hơn.
2b] Trình xử lý tải lên phía máy chủ
2b-chunk.php
8 trống trên khối đầu tiên.
8 khi chúng đang được tải lên.
8 trở lại thành những gì nó được cho là.Xong! Bây giờ bạn có một hệ thống có khả năng xử lý các tải lên tệp lớn.
Phương pháp 3] Tải lên có thể tiếp tục
3a] HTML & JavaScript
3a-resumable.html
// [C] INIT FLOWJS
window.onload = [] => {
// [C1] NEW FLOW OBJECT
var flow = new Flow[{
target: "3c-resumable.php",
chunkSize: 1024*1024, // 1MB
singleFile: true
}];
if [flow.support] {
// [C2] ASSIGN BROWSE BUTTON
flow.assignBrowse[document.getElementById["upBrowse"]];
// OR DEFINE DROP ZONE
// flow.assignDrop[document.getElementById["upDrop"]];
// [C3] ON FILE ADDED
flow.on["fileAdded", [file, evt] => {
let fileslot = document.createElement["div"];
fileslot.id = file.uniqueIdentifier;
fileslot.innerHTML = `${file.name} [${file.size}] - 0%`;
document.getElementById["list"].appendChild[fileslot];
}];
// [C4] ON FILE SUBMITTED [ADDED TO UPLOAD QUEUE]
flow.on["filesSubmitted", [arr, evt] => flow.upload[]];
// [C5] ON UPLOAD PROGRESS
flow.on["fileProgress", [file, chunk] => {
let progress = [chunk.offset + 1] / file.chunks.length * 100;
progress = progress.toFixed[2] + "%";
let fileslot = document.getElementById[file.uniqueIdentifier];
fileslot = fileslot.getElementsByTagName["strong"][0];
fileslot.innerHTML = progress;
}];
// [C6] ON UPLOAD SUCCESS
flow.on["fileSuccess", [file, message, chunk] => {
let fileslot = document.getElementById[file.uniqueIdentifier];
fileslot = fileslot.getElementsByTagName["strong"][0];
fileslot.innerHTML = "DONE";
}];
// [C7] ON UPLOAD ERROR
flow.on["fileError", [file, message] => {
let fileslot = document.getElementById[file.uniqueIdentifier];
fileslot = fileslot.getElementsByTagName["strong"][0];
fileslot.innerHTML = "ERROR";
}];
// [C8] PAUSE/CONTINUE UPLOAD
document.getElementById["upToggle"]. title = [] => {
if [flow.isUploading[]] { flow.pause[]; }
else { flow.resume[]; }
};
}
};
- HTML chỉ có 3 yếu tố.
6 Danh sách tập tin tải lên.
2 Nút tải lên.// [C] INITIALIZE UPLOADER window.onload = [] => { // [C1] GET HTML FILE LIST var list = document.getElementById["list"]; // [C2] INIT PLUPLOAD var uploader = new plupload.Uploader[{ runtimes: "html5", browse_button: "pick", url: "2b-chunk.php", chunk_size: "10mb", init: { PostInit: [] => { list.innerHTML = "
Ready"; }, FilesAdded: [up, files] => { plupload.each[files, [file] => { let row = document.createElement["div"]; row.id = file.id; row.innerHTML = `${file.name} [${plupload.formatSize[file.size]}] `; list.appendChild[row]; }]; uploader.start[]; }, UploadProgress: [up, file] => { document.querySelector[`#${file.id} strong`].innerHTML = `${file.percent}%`; }, Error: [up, err] => console.error[err] } }]; uploader.init[]; };
3 Nút tạm dừng/tiếp tục.// [C] INITIALIZE UPLOADER window.onload = [] => { // [C1] GET HTML FILE LIST var list = document.getElementById["list"]; // [C2] INIT PLUPLOAD var uploader = new plupload.Uploader[{ runtimes: "html5", browse_button: "pick", url: "2b-chunk.php", chunk_size: "10mb", init: { PostInit: [] => { list.innerHTML = "
Ready"; }, FilesAdded: [up, files] => { plupload.each[files, [file] => { let row = document.createElement["div"]; row.id = file.id; row.innerHTML = `${file.name} [${plupload.formatSize[file.size]}] `; list.appendChild[row]; }]; uploader.start[]; }, UploadProgress: [up, file] => { document.querySelector[`#${file.id} strong`].innerHTML = `${file.percent}%`; }, Error: [up, err] => console.error[err] } }]; uploader.init[]; };
- Tải thư viện FlowJS.
- Bắt đầu FlowJS, sẽ không chạy qua từng dòng một lần nữa. Nhưng giống như plupload, điều này bắt đầu tải lên sau khi một tệp được chọn. Đọc tài liệu của họ nếu bạn muốn danh sách đầy đủ các cài đặt và sự kiện. Liên kết dưới đây.
3B] Tải xuống Máy chủ Php Flow
Tiếp theo, chúng tôi sẽ xây dựng phía máy chủ. Don Tiết cần phải băn khoăn, FlowJS cũng có một thư viện PHP.
- Tải xuống và cài đặt Trình soạn thảo nếu bạn chưa làm như vậy.
- Mở dòng lệnh, điều hướng đến thư mục dự án của bạn.
- Chạy
2.php_value upload_max_filesize 150M php_value post_max_size 150M php_value max_input_time 300 php_value max_execution_time 300
Đó là tất cả. Nhà soạn nhạc sẽ tìm nạp phiên bản mới nhất vào thư mục
// [C] INITIALIZE UPLOADER
window.onload = [] => {
// [C1] GET HTML FILE LIST
var list = document.getElementById["list"];
// [C2] INIT PLUPLOAD
var uploader = new plupload.Uploader[{
runtimes: "html5",
browse_button: "pick",
url: "2b-chunk.php",
chunk_size: "10mb",
init: {
PostInit: [] => { list.innerHTML = "Ready"; },
FilesAdded: [up, files] => {
plupload.each[files, [file] => {
let row = document.createElement["div"];
row.id = file.id;
row.innerHTML = `${file.name} [${plupload.formatSize[file.size]}] `;
list.appendChild[row];
}];
uploader.start[];
},
UploadProgress: [up, file] => {
document.querySelector[`#${file.id} strong`].innerHTML = `${file.percent}%`;
},
Error: [up, err] => console.error[err]
}
}];
uploader.init[];
};
5.3c] Trình xử lý tải lên php
3c-resumable.php