Ứng dụng web PHP của tôi có API có thể nhận các tệp lớn hợp lý (tối đa 32 MB) được mã hóa base64. Mục tiêu là viết các tệp này ở đâu đó trên hệ thống tệp của tôi. Đã giải mã tất nhiên. Điều gì sẽ là cách ít tốn kém nhất để làm điều này?Cách giải mã64 các tệp lớn trong PHP
Chỉnh sửa: Nhận tệp qua API có nghĩa là tôi có chuỗi 32MB trong ứng dụng PHP, không phải tệp nguồn 32 MB ở đâu đó trên đĩa. Tôi cần phải giải mã chuỗi đó vào hệ thống tập tin.
Sử dụng base64_decode() của PHP không cắt vì nó sử dụng lô bộ nhớ vì vậy tôi tiếp tục chạy vào giới hạn bộ nhớ của PHP (Tôi biết, tôi có thể tăng giới hạn đó nhưng tôi không cảm thấy tốt về việc cho phép PHP để sử dụng 256MB hoặc hơn cho mỗi quá trình).
Bất kỳ tùy chọn nào khác? Tôi có thể làm điều đó bằng tay? Hoặc ghi tập tin vào đĩa được mã hóa và gọi một số lệnh bên ngoài? Bất cứ suy nghĩ nào?
Một ý tưởng hay, nhưng không phải là những gì tôi đang tìm kiếm. Trong trường hợp của tôi, các ứng dụng máy khách đang đẩy các tệp lớn lên XML-RPC (HTTP POST) tới máy chủ của tôi (cùng với một vài tham số khác). Khách hàng có thể đứng sau NAT và tường lửa, do đó, tìm nạp dữ liệu từ máy khách bằng cách sử dụng GET là không thể. –
Nếu cấu trúc của phản hồi rpc xml hơi tĩnh, bạn có thể di chuyển qua cơ thể phản hồi theo cách thủ công, vì vậy bạn vẫn có thể tránh hoàn toàn việc sử dụng bộ nhớ. Nếu bạn phải đặt dữ liệu trong một biến tạm thời, bạn có thể thay đổi thiết lập một chút. (Tôi đang cập nhật ví dụ ngay sau ví dụ;)) – Evert
Cảm ơn bạn đã cập nhật. Tôi thấy nó vượt trội so với câu trả lời mà tôi đã chấp nhận ban đầu. –