>  기사  >  백엔드 개발  >  대용량 XLSX 파일을 로드할 때 메모리 고갈을 방지하기 위해 PHPExcel을 어떻게 최적화할 수 있습니까?

대용량 XLSX 파일을 로드할 때 메모리 고갈을 방지하기 위해 PHPExcel을 어떻게 최적화할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-19 13:58:02473검색
How Can I Optimize PHPExcel to Prevent Memory Exhaustion When Loading Large XLSX Files?
PHPExcel 메모리 사용량 최적화

이 문제를 해결하기 위해 몇 가지 최적화 기술을 사용할 수 있습니다.

선택적 시트 로드

특정 워크시트만 로드해야 하는 경우 setLoadSheetsOnly()를 사용하여 리더가 읽는 시트 수를 제한하세요.

읽기 필터

특정 셀이나 행만 검색하려면 읽기 필터를 사용할 수 있습니다.

$objReader->setLoadSheetsOnly([
    'Data Sheet #1',
    'Data Sheet #3'
]);
청크

큰 스프레드시트를 청크로 읽으면 데이터의 일부만 로드하여 메모리 사용량을 최소화할 수 있습니다.

class MyReadFilter implements PHPExcel_Reader_IReadFilter {
    // ... implementation
}

$objReader->setReadFilter(new MyReadFilter());
데이터 읽기 전용

readDataOnly를 true로 설정하면 데이터 서식 지정 없이 셀 값만 로드되어 메모리 사용량이 줄어듭니다.

$chunkSize = 20;
$chunkFilter = new chunkReadFilter();

for ($startRow = 2; $startRow < 65536; $startRow += $chunkSize) {
    $chunkFilter->setRows($startRow, $chunkSize);
    $objPHPExcel = $objReader->load($inputFileName);
}
셀 캐싱

셀 캐싱은 셀 개체를 압축된 형식으로 저장하므로 메모리 소비는 크게 줄지만 속도는 저하됩니다.

대체 방법
$objReader->setReadDataOnly(true);

반복기를 사용하고 수동으로 배열을 작성하는 대신 PHPExcel의 toArray를 사용하는 것이 좋습니다. () 또는 rangeToArray() 메서드를 사용하면 효율적인 배열 생성이 가능합니다.

위 내용은 대용량 XLSX 파일을 로드할 때 메모리 고갈을 방지하기 위해 PHPExcel을 어떻게 최적화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.