Saya sedang mengerjakan aplikasi yang menyertakan REST API kecil. Salah satu metode ini perlu menerima unggahan file biner berukuran besar (hampir 300MB) pada permintaan PUT.
Karena filenya cukup besar, dan karena ada risiko beberapa permintaan berjalan sekaligus, saya ingin menghindari menyimpan seluruh isi permintaan di memori. Saya berharap melakukan ini dengan membaca langsung dari aliran php://input
dan menyedotnya ke sebuah file.
Namun, metode input()
pengontrol tampaknya mengganggu. Saya memahami alasan input()
—setelah Anda membaca aliran php://input
, aliran itu hilang, jadi input()
menyimpannya untuk akses berulang. Jelas sekali, ini adalah perilaku yang ingin saya lewati dalam hal ini.
Namun tampaknya input()
dipanggil di suatu tempat sebelum kode pengontrol saya dijalankan, karena saat saya mencapai php://input
, tidak ada lagi yang perlu dibaca.
Jadi, pertanyaan saya: Apakah ada cara bagi pengontrol CakePHP untuk mengalirkan isi permintaan yang sangat besar ke disk tanpa terlebih dahulu memuat semuanya ke dalam memori?