2011-09-07 7 views
3

파일 크기가 750Mo 인 매우 큰 XML 파일을 구문 분석해야합니다!메모리 제한 및 매우 큰 XML 파일

나는 30Mo에서 파일을 열 수있는 아무런 문제가 없을 512M

ini_set('memory_limit', '512M'); 

에서 meomy 제한이 있지만, 750Mo으로, 나는 그 파일을 열 수 않는

Fatal error: Allowed memory size of 1677721600 bytes exhausted (tried to allocate 2988843769 bytes) 

치명적인 오류를 얻을 :

$fichier = file_get_contents($inputfileName); 
$xmlInput = simplexml_load_string(utf8_encode($fichier)); 

이 파일을 여는 것이 좋습니까?

+0

다시 메모리 제한을 늘 ... 그 옵션이 아니라면, 당신은 파일의 내용으로 무엇을하고 있는지? 그 정보는 아마도 더 이상의 조언을하기 위해 필요할 것입니다. –

+0

왜 XML 판독기가 파일 크기의 4 배를 할당해야하는지 알지 못합니다. 이 방법이나 다른 방법으로 파일을 분할하고 좋아하는 XML 판독기로 한 번에 하나씩 비트를 처리 할 수 ​​없습니까? –

+0

XMLReader를 사용하면 – bahamut100

답변

6

XML을 노드 구조로 완전히 파싱하기 때문에 DOM 기반 확장을 사용하면 원시 XML이 훨씬 더 많은 메모리를 차지합니다. XMLReader을 대신보십시오

XMLReader 확장은 XML Pull 구문 분석기입니다. 리더는 문서 스트림에서 앞으로 나아가는 각 노드에서 멈추는 커서 역할을합니다.

하고 LIBXML_PARSEHUGE

로 큰 파일을 완벽하게 사용되는 XMLReader 클래스에 대한 대체 것 event-based XMLParser

0

SAX 또는 기타 이벤트 기반 xml 파서가 필요합니다. Google 'php sax parser'.

관련 문제