在PHP 中可靠地下載大檔案:解決傳輸問題
透過PHP 下載大檔案時,可能會遇到傳輸損壞或不完整的問題令人沮喪。要解決此問題,請考慮以下方法:
分塊檔案
PHP 中最簡單的方法是將檔案分成更小的片段。此技術對於超出 PHP 記憶體限制的大檔案特別有效。
$filename = $filePath . $filename; $chunksize = 5 * (1024 * 1024); if (file_exists($filename)) { set_time_limit(300); $size = filesize($filename); // Set headers header('Content-Type: application/octet-stream'); header('Content-Transfer-Encoding: binary'); header('Content-Length: ' . $size); if ($size > $chunksize) { $handle = fopen($filename, 'rb'); while (!feof($handle)) { print(@fread($handle, $chunksize)); ob_flush(); flush(); } fclose($handle); } else { readfile($path); } exit; } else { echo 'File "' . $filename . '" does not exist!'; }
替代函數
除了 fopen 和 fgets 之外,還可以考慮使用 PHP 函數,例如 http_send_file 或http_send_data。這些函數專為發送文件內容而設計,可以提高傳輸可靠性。
專用腳本
對於更高級的場景,請探索利用 cURL 或 FTP 等協定的專用腳本有效地處理文件下載。這些腳本可以提供額外的控制和靈活性。
其他注意事項
確保您的檔案以 UTF-8 編碼保存,以防止下載過程中損壞。驗證您的伺服器是否有足夠的記憶體和時間限制來處理大量下載。如有必要,請使用 ini_set('memory_limit', '1G') 增加記憶體限制。
以上是如何在 PHP 中可靠地下載大檔案:哪些技術可以避免傳輸損壞或不完整?的詳細內容。更多資訊請關注PHP中文網其他相關文章!