Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Muat Turun Fail Besar dari URL dalam PHP tanpa Keletihan Memori?

Bagaimanakah Saya Boleh Muat Turun Fail Besar dari URL dalam PHP tanpa Keletihan Memori?

Patricia Arquette
Patricia Arquetteasal
2024-12-16 01:38:13643semak imbas

How Can I Download Large Files from URLs in PHP without Memory Exhaustion?

Memuat turun Fail Besar daripada URL tanpa Isu Memori

Pembangun web biasanya menghadapi cabaran memuat turun fail besar daripada URL jauh. Walaupun pendekatan mudah menggunakan file_get_contents() dan file_put_contents() mungkin mencukupi untuk fail yang lebih kecil, ia adalah pendek untuk fail yang melebihi had memori. Isu ini menimbulkan persoalan: cara memuat turun fail besar secara berperingkat-peringkat tanpa meletihkan sumber memori.

Mujurlah, PHP menawarkan penyelesaian elegan yang menangani kebimbangan ini. Sejak versi 5.1.0, file_put_contents() telah menyokong penulisan data dalam ketulan dengan menghantar pemegang strim sebagai hujah kedua.

Berikut ialah kod diubah suai yang memanfaatkan ciri ini:

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

Ini kod beroperasi seperti berikut:

  • Ia membuka URL jauh sebagai pemegang strim menggunakan fopen().
  • Ia kemudian membekalkan pemegang ini kepada file_put_contents() sebagai parameter data.
  • Apabila fail jauh dimuat turun, ia akan ditulis secara berperingkat ke fail setempat, Tmpfile.zip, tanpa membebankan memori.

Manual PHP menerangkan bahawa menghantar pemegang strim ke file_put_contents() mencetuskan penyalinan penimbal yang tinggal dari strim ke fail sasaran. Mekanisme ini secara berkesan mencerminkan kefungsian stream_copy_to_stream().

Dengan menggunakan teknik ini, pembangun boleh memuat turun fail besar dengan mudah tanpa menghadapi kekangan memori, memastikan pemindahan data yang lancar walaupun untuk saiz fail yang paling besar.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Muat Turun Fail Besar dari URL dalam PHP tanpa Keletihan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn