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 외에도 http_send_file 또는 http_send_data. 이러한 기능은 파일 콘텐츠 전송을 위해 특별히 설계되었으며 전송 안정성을 향상시킬 수 있습니다.
전용 스크립트
더 고급 시나리오의 경우 cURL 또는 FTP와 같은 프로토콜을 활용하는 전용 스크립트를 살펴보세요. 파일 다운로드를 효율적으로 처리합니다. 이러한 스크립트는 추가 제어 및 유연성을 제공할 수 있습니다.
추가 고려 사항
다운로드 중 손상을 방지하려면 파일이 UTF-8 인코딩으로 저장되었는지 확인하세요. 서버에 대용량 다운로드를 처리할 수 있는 충분한 메모리와 시간 제한이 있는지 확인하십시오. 필요한 경우 ini_set('memory_limit', '1G')를 사용하여 메모리 제한을 늘립니다.
위 내용은 PHP에서 대용량 파일을 안정적으로 다운로드하는 방법: 손상되거나 불완전한 전송을 방지할 수 있는 기술은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!