2015-07-29 40 views
9

Tôi đã tạo API trong Laravel, cho phép người dùng tải lên lưu trữ zip chứa hình ảnh.Xử lý nhiều tệp tải lên đồng thời lớn

Sau khi lưu trữ được tải lên, nó được gửi tới S3 và sau đó được dịch vụ khác chọn để xử lý.

Tôi nhận thấy rằng với lưu trữ lớn hơn, PHP tiếp tục đạt đến giới hạn bộ nhớ của nó. Tôi biết tôi có thể tăng giới hạn nhưng điều đó giống như một con dốc trơn, đặc biệt là khi tôi tưởng tượng nhiều người dùng tải lên các tệp lớn.

Giải pháp hiện tại của tôi là hoàn toàn bỏ qua máy chủ của tôi và cho phép khách hàng tải trực tiếp lên S3. Nhưng điều này cảm thấy rất không an toàn và dễ bị spam/DDOS.

Tôi đoán những gì tôi thực sự hy vọng là một cuộc thảo luận về cách điều này có thể được xử lý một cách trang nhã.

Có ngôn ngữ nào phù hợp hơn cho loại xử lý/đồng thời này không? Tôi có thể dễ dàng sinh ra quá trình tải lên cho một thứ khác.

Các vấn đề của tôi về S3 không có cơ sở? Tôi biết bao giờ yêu cầu cần được ký nhưng thẻ được tạo có thể sử dụng lại được, vì vậy chúng có thể khai thác được.

Tài nguyên trực tuyến nói về NGINX là giải pháp tốt hơn vì có mô-đun tải lên ghi trực tiếp lên tệp, vì apache dường như đang cố gắng làm rất nhiều trong bộ nhớ (không chắc chắn 100% về điều này).

Tôi không rõ ràng về toàn bộ quá trình tải lên PHP nếu tôi thành thật. Yêu cầu có được lưu trữ trực tiếp trong bộ nhớ không? nghĩa là mười lần tải lên 50mb sẽ gây ra ngoại lệ giới hạn bộ nhớ đối với 500MB RAM của tôi

+1

Có một cuộc thảo luận hay về http://stackoverflow.com/questions/864570/very-large-uploads-with-php – Victory

+1

Tệp được tải lên này được lưu trữ trên ổ đĩa cứng, theo mặc định (ví dụ như tệp trong một thư mục tạm thời). Tôi không chắc về phần còn lại. Câu hỏi hay, mặc dù! – Cully

+1

Đây có thể là một tài nguyên khác: http://stackoverflow.com/questions/12609451/forward-a-file-upload-stream-to-s3-through-iteratee-with-play2-scala – Cully

Trả lời

0

Cảm ơn bạn đã thảo luận mọi người. Sau khi xem xét quá trình đăng bài/tải lên PHP, nó đã xóa bỏ mọi thứ hoạt động như thế nào một chút.

Cập nhật SDK xuất hiện để loại bỏ các vấn đề giới hạn bộ nhớ ban đầu đó.

Tất nhiên tôi vẫn đang xem xét vấn đề đồng thời, nhưng tôi cảm thấy đây là vấn đề tối ưu hóa/apache/nginx/server/spec tối ưu hơn ngôn ngữ của tôi.

Cảm ơn tất cả mọi người!

Các vấn đề liên quan