PHP에서 대용량 JSON 파일 처리
대량 JSON 파일을 처리하는 것은 어려울 수 있으며, 특히 크기가 200M를 초과하는 대용량 파일을 처리할 때 더욱 그렇습니다. . 이 문제를 해결하려면 전체 파일을 메모리에 로드하지 않는 것이 중요합니다. 대신 전체 콘텐츠를 버퍼링하지 않고 개체를 개별적으로 처리하는 스트리밍 접근 방식을 권장합니다.
효과적인 솔루션 중 하나는 PHP 7용 pcrov/JsonReader와 같은 스트리밍 JSON 풀 파서를 활용하는 것입니다. 이 파서는 이벤트와 다른 접근 방식을 따릅니다. 파서에서 메서드를 호출하여 명시적으로 데이터를 요청할 수 있도록 하는 기반 파서입니다. 이는 구문 분석 프로세스에 대한 더 큰 유연성과 제어를 제공합니다.
예 1: 개체를 전체 엔터티로 읽기
이 예는 JSON 파일에서 개체를 완전한 개체로 추출하는 방법을 보여줍니다. 배열:
use pcrov\JsonReader\JsonReader; $reader = new JsonReader(); $reader->open("data.json"); $reader->read(); // Outer array. $depth = $reader->depth(); // Check in a moment to break when the array is done. $reader->read(); // Step to the first object. do { print_r($reader->value()); // Do your thing. } while ($reader->next() && $reader->depth() > $depth); // Read each sibling. $reader->close();
예 2: 명명된 개인 읽기 요소
각 개체에서 특정 요소를 추출하기 위해 이 예에서는 다음을 보여줍니다.
$reader = new pcrov\JsonReader\JsonReader(); $reader->open("data.json"); while ($reader->read()) { $name = $reader->name(); if ($name !== null) { echo "$name: {$reader->value()}\n"; } } $reader->close();
예 3: 이름으로 속성 필터링
이 마지막 예는 동일한 이름 내에 중복된 이름이 있는 경우에도 특정 이름으로 속성을 필터링하는 방법을 보여줍니다. object:
$json = <<<JSON [ {"property":"value", "property2":"value2"}, {"foo":"foo", "foo":"bar"}, {"prop":"val"}, {"foo":"baz"}, {"foo":"quux"} ] JSON; $reader = new pcrov\JsonReader\JsonReader(); $reader->json($json); while ($reader->read("foo")) { echo "{$reader->name()}: {$reader->value()}\n"; } $reader->close();
대용량 JSON 파일을 처리하기 위한 최적의 접근 방식은 데이터 구조와 의도한 작업에 따라 달라집니다. 그러나 스트리밍 JSON 파서를 활용하면 개발자는 메모리 문제 없이 대용량 JSON 파일을 효율적으로 처리할 수 있습니다.
위 내용은 메모리 문제 없이 PHP에서 대용량 JSON 파일을 효율적으로 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!