> 백엔드 개발 > PHP 튜토리얼 > 메모리 소모 없이 PHP의 URL에서 대용량 파일을 다운로드하려면 어떻게 해야 합니까?

메모리 소모 없이 PHP의 URL에서 대용량 파일을 다운로드하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2024-12-16 01:38:13
원래의
641명이 탐색했습니다.

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

메모리 문제 없이 URL에서 대용량 파일 다운로드

웹 개발자는 일반적으로 원격 URL에서 대용량 파일을 다운로드하는 문제에 직면합니다. file_get_contents() 및 file_put_contents()를 사용하는 간단한 접근 방식은 작은 파일의 경우 충분할 수 있지만 메모리 제한을 초과하는 경우에는 부족합니다. 이 문제는 메모리 리소스를 소모하지 않고 대용량 파일을 점진적으로 다운로드하는 방법에 대한 질문을 촉발했습니다.

다행히도 PHP는 이러한 문제를 해결하는 훌륭한 솔루션을 제공합니다. 버전 5.1.0부터 file_put_contents()는 스트림 핸들을 두 번째 인수로 전달하여 데이터를 청크로 작성하는 것을 지원했습니다.

이 기능을 활용하는 수정된 코드는 다음과 같습니다.

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
로그인 후 복사

이것은 코드는 다음과 같이 작동합니다.

  • 다음을 사용하여 원격 URL을 스트림 핸들로 엽니다. fopen().
  • 그런 다음 이 핸들을 file_put_contents()에 데이터 매개변수로 제공합니다.
  • 원격 파일이 다운로드됨에 따라 로컬 파일인 Tmpfile.zip에 점진적으로 기록됩니다. 메모리 오버로드 없이.

PHP 매뉴얼에서는 스트림 핸들을 file_put_contents()에 전달하면 복사가 트리거된다고 설명합니다. 스트림에서 대상 파일로의 나머지 버퍼. 이 메커니즘은 stream_copy_to_stream()의 기능을 효과적으로 미러링합니다.

이 기술을 사용하면 개발자는 메모리 제약 없이 대용량 파일을 쉽게 다운로드할 수 있으므로 가장 큰 파일 크기에도 원활한 데이터 전송이 보장됩니다.

위 내용은 메모리 소모 없이 PHP의 URL에서 대용량 파일을 다운로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿