PHP에서 메모리 부족 없이 대용량 XML 파일을 파싱하는 방법
(dev.to)대용량 XML 파일을 처리할 때 발생하는 메모리 부족(OOM) 문제를 해결하기 위해, 전체 파일을 로드하는 대신 노드 단위로 탐색하는 스트리밍 방식의 접근법을 제안합니다. 단순한 XML 조작이 아닌, 필요한 데이터만 효율적으로 추출하여 애플리케이션 친화적인 구조로 변환하는 '추출 중심'의 설계가 핵심입니다.
이 글의 핵심 포인트
- 1대용량 XML 처리 시 `simplexml_load_file`은 전체 문서를 메모리에 로드하여 OOM(Out of Memory) 위험을 초래함
- 2노드 단위로 커서를 이동하며 읽는 `XMLReader` 기반의 스트리밍 방식이 메모리 안전성을 보장함
- 3XML 처리의 본질은 문서 조작이 아니라 필요한 레코드를 찾아 배열로 변환하는 '데이터 추출'에 있음