이 자습서는 메모리 소비를 최소화하는 데 중점을두고 큰 파일을 처리하기위한 효율적인 PHP 기술을 탐구합니다. 우리는 그들의 효과를 입증하기 위해 메모리 사용을 측정하는 몇 가지 접근법을 조사합니다. 열쇠는 전체 파일을 한 번에 메모리에로드하지 않는 것입니다.
주요 전략 :
라인 바이 라인 판독 값 : 및 루프 프로세스 내에서 및
를 사용하여 라인별로 파일을 파일로, 메모리 풋 프린트를 크게 줄입니다. 발전기는 한 번에 하나씩 라인을 산출하여 이것을 더욱 향상시킵니다.
스트림 배관 : 사용을 사용하는 스트림 (파일 또는 URL)간에 데이터를 효율적으로 전송하고 소스간에 데이터를 직접 처리하여 메모리 사용량을 최소화합니다. 데이터 자체를 조작 할 필요가 없을 때 특히 유용합니다.
fopen()
스트림 필터 : 압축 (zlib.deflate) 및 감압 (zlib.inflate)과 같은 비행 내 데이터 조작에 대한 스트림 필터를 활용합니다. 이것은 메모리 사용 및 성능을 최적화합니다. fgets()
사용자 정의 프로토콜 및 필터 (고급) : 복잡한 시나리오의 경우 최대 메모리 효율로 특정 데이터 처리 요구를 처리하기 위해 사용자 정의 프로토콜 및 필터를 작성하십시오. 이를 위해서는 고급 프로그래밍이 필요하지만 최적화의 상당한 잠재력을 제공합니다. stream_copy_to_stream()
우리는 및 헬퍼 함수 ()를 사용하여 튜토리얼 전체에서 메모리 소비를 추적합니다. 이를 통해 다른 방법을 직접 비교할 수 있습니다. CPU 사용량도 요소이지만 PHP 내에서 직접 측정하는 것은 실용적이지 않습니다.
시나리오 1 : 라인별로 데이터 라인을 처리하는 시나리오 1
위 내용은 PHP로 큰 파일을 읽는 방법 (서버를 죽이지 않고)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!