Muat Turun Fail Besar yang Boleh Dipercayai dalam PHP
Untuk menangani isu pemindahan fail yang rosak atau tidak lengkap semasa menghantar fail besar dalam PHP, adalah penting untuk melaksanakan kaedah muat turun yang boleh dipercayai.
Kod yang disediakan menggunakan gelung mudah untuk membaca dan mengeluarkan fail dalam ketulan. Walau bagaimanapun, kaedah ini boleh menghadapi masalah dengan fail besar, terutamanya jika terdapat sebarang gangguan semasa pemindahan.
Untuk meningkatkan kebolehpercayaan, pertimbangkan untuk menggunakan fungsi http_send_file atau http_send_data PHP. Fungsi-fungsi ini menyelaraskan proses pemindahan fail dan mengendalikan pengurusan sumber dengan lebih cekap.
Untuk prestasi optimum dan kebolehpercayaan yang lebih tinggi, anda boleh melaksanakan pemotongan fail. Ini melibatkan memecahkan fail kepada ketulan yang lebih kecil dan menghantarnya secara berurutan. Di bawah ialah contoh coretan kod yang menunjukkan pendekatan ini:
// Determine the file path and filename $filename = $filePath . $filename; // Set chunk size (adjust based on server and file size requirements) $chunkSize = 5 * (1024 * 1024); // 5 MB // Check if file exists if (file_exists($filename)) { // Set download headers and prepare for transfer set_time_limit(300); $size = intval(sprintf("%u", filesize($filename))); header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . $size); header('Content-Disposition: attachment;filename="' . basename($filename) . '"'); // If file is larger than chunk size, use loop to send chunks if ($size > $chunkSize) { $handle = fopen($filename, 'rb'); while (!feof($handle)) { print(@fread($handle, $chunkSize)); ob_flush(); flush(); } fclose($handle); } else { // Read and output the entire file in one go readfile($path); } exit; } else { echo 'File "' . $filename . '" does not exist!'; }
Ingat untuk mengekod fail anda dalam UTF-8 sebelum menghantarnya untuk mengelakkan kemungkinan rasuah. Selain itu, pertimbangkan untuk melaksanakan mekanisme pengendalian ralat untuk mengurus sebarang kemungkinan gangguan atau isu semasa proses pemindahan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memastikan Muat Turun Fail Besar Boleh Dipercayai dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!