Tải lên tệp php mất quá nhiều thời gian
Bạn đã bao giờ gặp khó khăn với việc tải lên tệp lớn trong PHP chưa? Show
Tải lên tệp là một nhiệm vụ phổ biến mà chúng tôi thực hiện trong hầu hết các dự án web hiện đại của mình. Với tất cả các công cụ khác nhau có sẵn, không khó để triển khai tính năng tải tệp lên bằng bất kỳ ngôn ngữ nào. Tuy nhiên, khi tải lên tệp lớn, mọi thứ sẽ hơi phức tạp Giả sử bạn đang cố tải lên một tệp khá lớn. Bạn đã đợi hơn một giờ rồi và tải lên được 90%. Rồi đột nhiên, kết nối của bạn bị ngắt hoặc trình duyệt bị lỗi. Quá trình tải lên bị hủy bỏ và bạn cần bắt đầu lại từ đầu. Bực bội, phải không? Trong bài đăng này, chúng ta sẽ thấy một nỗ lực để giải quyết vấn đề này trong PHP bằng cách tải lên các tệp trong các khối có thể tiếp tục sử dụng giao thức tus Tải lên tệp có thể tiếp tục trong PHP — DemoTus là gì? Tus là một giao thức mở dựa trên HTTP để tải lên tệp có thể tiếp tục. Có thể tiếp tục nghĩa là chúng tôi có thể tiếp tục ở nơi chúng tôi đã dừng lại mà không cần tải lại toàn bộ dữ liệu lên trong trường hợp có bất kỳ gián đoạn nào. Sự gián đoạn có thể xảy ra một cách tự nguyện nếu người dùng muốn tạm dừng hoặc do vô tình trong trường hợp có sự cố mạng hoặc máy chủ ngừng hoạt động Tại sao vậy? Trích dẫn từ blog của Vimeo
Một lợi ích chính khác của việc tải tệp lên theo cách này là bạn có thể bắt đầu tải lên từ máy tính xách tay và thậm chí tiếp tục tải lên cùng một tệp từ điện thoại di động hoặc bất kỳ thiết bị nào khác. Đây là một cách tuyệt vời để nâng cao trải nghiệm người dùng của bạn Bắt đầu Hãy bắt đầu bằng cách thêm phụ thuộc của chúng tôi $ composer require ankitpokhrel/tus-php tus-php là một triển khai ứng dụng khách và máy chủ PHP thuần túy theo khuôn khổ cho giao thức tải lên có thể tiếp tục tus v1. 0. 0 ankitpokhrel/tus-phptus-php - 🚀 Máy chủ và máy khách PHP thuần túy cho giao thức tải lên có thể tiếp tục tus v1. 0. 0github. com Tạo một máy chủ để xử lý các yêu cầu của chúng tôi Đây là cách một máy chủ đơn giản trông như thế nào // server.php$server = new \TusPhp\Tus\Server('redis'); Bạn cần định cấu hình máy chủ của mình để phản hồi một điểm cuối cụ thể. Ví dụ, trong Nginx, bạn sẽ làm một cái gì đó như thế này # nginx.conf Giả sử rằng URL đến máy chủ của chúng tôi là http. //người phục vụ. tus. địa phương. Vì vậy, dựa trên cấu hình nginx ở trên, chúng ta có thể truy cập các điểm cuối tus của mình bằng cách sử dụng http. //người phục vụ. tus. Tập tin có sẵn Bây giờ, chúng tôi có sẵn các điểm cuối RESTful sau đây để làm việc với # Gather information about server's current configuration Kiểm tra chi tiết giao thức để biết thêm thông tin về các điểm cuối Xử lý tải lên bằng ứng dụng khách tus-php Sau khi máy chủ được đặt đúng chỗ, máy khách có thể được sử dụng để tải tệp lên theo khối. Hãy để chúng tôi bắt đầu bằng cách tạo một biểu mẫu HTML đơn giản để nhận đầu vào từ người dùng Sau khi một biểu mẫu được gửi, chúng tôi cần làm theo một số bước để xử lý việc tải lên
// Tus client$client = new \TusPhp\Tus\Client('http://server.tus.local'); Tham số đầu tiên trong đoạn mã trên là điểm cuối máy chủ tus của bạn 2. Khởi tạo ứng dụng khách với siêu dữ liệu tệp Để giữ cho một lần tải lên là duy nhất, chúng tôi cần sử dụng một số mã định danh để nhận dạng tải lên trong các yêu cầu sắp tới. Đối với điều này, chúng tôi sẽ phải tạo một khóa tải lên duy nhất có thể được sử dụng để tiếp tục tải lên sau này. Bạn có thể cung cấp khóa tải lên một cách rõ ràng hoặc để hệ thống tự tạo khóa // Set upload key and file meta$client->setKey($uploadKey) Nếu bạn không cung cấp khóa tải lên một cách rõ ràng, bước trên sẽ giống như thế này $client->file($_FILES['tus_file']['tmp_name'], 'your file name');$uploadKey = $client->getKey(); // Unique upload key 3. Tải lên một đoạn ________số 8Lần tới, khi bạn muốn tải lên một đoạn khác, bạn có thể sử dụng cùng một khóa tải lên để tiếp tục // To resume upload in next request$bytesUploaded = $client->setKey($uploadKey)->upload($chunkSize); Khi quá trình tải lên hoàn tất, máy chủ sẽ xác minh tải lên dựa trên tổng kiểm tra để đảm bảo tệp đã tải lên không bị hỏng. Theo mặc định, máy chủ sẽ sử dụng thuật toán // server.php$server = new \TusPhp\Tus\Server('redis');1 để xác minh tải lên Xử lý tải lên bằng tus-js-client Uppy là một plugin tải lên tệp kiểu mô-đun, kiểu dáng đẹp được phát triển bởi cùng những người đứng sau giao thức tus. Bạn có thể sử dụng uppy để tích hợp liền mạch tus-js-client chính thức với máy chủ tus-php. Điều đó có nghĩa là chúng tôi đang sử dụng triển khai php của máy chủ và triển khai js của máy khách // server.php$server = new \TusPhp\Tus\Server('redis');0 Tải lên một phần Máy chủ tus-php hỗ trợ tiện ích mở rộng ghép nối và có khả năng ghép nối nhiều tệp tải lên thành một tệp duy nhất cho phép khách hàng thực hiện tải lên song song và tải lên các đoạn không liền kề Tải lên một phần tệp bằng tus-phpVí dụ đầy đủ về tải lên một phần có thể được tìm thấy ở đây Từ cuối cùngBản thân dự án tus-php vẫn đang trong giai đoạn đầu. Một số phần có thể thay đổi trong tương lai. Có thể tìm thấy ba ví dụ triển khai khác nhau trong thư mục ví dụ. Vui lòng thử và báo cáo bất kỳ vấn đề nào được tìm thấy. Yêu cầu kéo và đề xuất dự án được chào đón nhiều hơn Làm cách nào để xử lý tải lên tệp lớn trong PHP?Để tải lên các tệp lớn trong PHP, bạn cần phải tăng giá trị của biến post_max_size trong php. ini hoặc tải lên các tệp có tổng kích thước tệp nhỏ hơn giá trị post_max_size . Ngoài ra, giá trị post_max_size phải lớn hơn giá trị upload_max_filesize.
Giới hạn tải lên tệp tối đa trong PHP là bao nhiêu?Các giá trị mặc định cho PHP sẽ hạn chế bạn ở kích thước tệp tải lên tối đa 2 MB .
Cách nhanh nhất để tải lên một tập tin là gì?Cách gửi tệp lớn . Tải tệp của bạn lên bộ nhớ đám mây. Tải tệp lên bộ nhớ đám mây là một cách tuyệt vời để chuyển các tệp lớn như ảnh và video. . Nén tập tin. Một phương pháp truyền tệp khác đã được thử nghiệm và thử nghiệm là nén chúng. . Sử dụng VPN. . ổ đĩa flash USB. . FTP. . SFTP. . FTPS. . Jumpshare Chúng tôi có thể tải tệp có kích thước bất kỳ lên ứng dụng PHP Có kể từ PHP 7 không?Theo mặc định, PHP cho phép tải lên tệp tối đa là 2MB |