PHP에서 대용량 XML 파일을 쉽게 구문 분석
대용량 XML 파일을 구문 분석하면 메모리 제약으로 인해 문제가 발생합니다. 이 기사에서는 PHP에서 대용량 XML 파일을 효율적으로 처리하기 위한 솔루션을 살펴봅니다.
스트리밍 XML API 활용
PHP는 expat와 XMLreader라는 두 가지 스트리밍 XML API를 제공합니다. 이러한 API는 스트리밍 방식으로 XML 콘텐츠를 처리하여 전체 트리 로드와 관련된 메모리 오버헤드를 방지합니다.
Expat는 레거시 API이므로 구문 분석 프로세스를 더 수동으로 처리해야 합니다. 반면에 XMLreader는 보다 객체 지향적인 접근 방식을 제공하고 많은 일반적인 구문 분석 작업을 처리합니다.
대형 DMOZ XML 파일용 파서 예
사용 방법을 보여주기 위해 스트리밍 XML 파서 중 DMOZ 콘텐츠/구조 XML 파일을 고려해 보겠습니다. 다음 PHP 클래스는 XMLreader를 사용하여 이러한 대용량 파일을 효율적으로 구문 분석합니다.
class SimpleDMOZParser { private $stack = array(); private $file; private $parser; private $currentId; private $current; public function __construct($file) { $this->file = $file; $this->parser = xml_parser_create("UTF-8"); xml_set_object($this->parser, $this); xml_set_element_handler($this->parser, "startTag", "endTag"); } public function startTag($parser, $name, $attribs) { // ... } public function endTag($parser, $name) { // ... } public function parse() { // ... } } $parser = new SimpleDMOZParser("content.rdf.u8"); $parser->parse();
이 클래스는 XML 파일의 청크를 반복적으로 읽고 요소가 발견될 때 콘텐츠를 처리합니다. 현재 컨텍스트를 추적하고 "LINK" 요소에서 관련 데이터를 추출하는 등의 특정 작업을 처리합니다.
위 내용은 PHP는 어떻게 메모리 문제 없이 거대한 XML 파일을 효율적으로 구문 분석할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!