2017-10-10 1 views
0

나는 꽤 많이 헤드 라인에 물어 보았다고 생각합니다.PHP의 SimpleXML에는 어떤 크기의 xml 파일이 너무 큽니까? 노드가 얼마나 깊이 중첩되어 있는지에 대한 바이트의 크기에 의존합니까?

내가 겪고있는 문제는 XML을 읽지 못하는 XML 파일을 SimpleXML로 파싱하려고하지만 때때로 성공합니다. 나는 그것이 메모리 부족으로 실행되는 스크립트에만 있다고 생각할 수 있습니다.

나는 XML 제품 피드가 200MB이지만, 최대 약 4 층까지 중첩되어 있습니다. 이것을 위해 SimpleXML을 사용해도 되나요? php.ini에서 메모리 제한을 늘리는 것일뿐입니다 (서버가 최대치를 부과하면서 테스트 할 수는 없습니다).

감사합니다.

+0

그냥이 사건을 논의한 사람이 HTML을 읽었습니다. 파일이 350MB라고해도 PHP는 객체를 구문 분석하기 위해 더 많은 메모리가 필요했습니다. 같은 문제가 있다고 생각합니다. https://stackoverflow.com/questions/46662542/cant-load-too-big-html-file-when-grab/46662624#46662624 – teeyo

+0

고마워! 그래서 php ini에서 메모리 제한을 늘리면 해결할 수 있으며 여전히 SimpleXML로 구문 분석 할 수 있습니까? 필자는 이제 SimpleXML에 대한 모든 논리를 작성했으며 파일이 너무 크기 때문에 다른 XML 구문 분석기로 전환해야한다는 번거 로움이 있습니다. –

+0

필자의 기억 한계가 파일 크기보다 높게 설정되었다고해도 PHP는 여전히 메모리로드를 사용하여 XML을 객체에 쓰고 파싱하므로 여전히 오류가 발생할 수 있습니다. –

답변

0

PHP가 처리 할 수있는 최대 파일 크기와 시스템에서 처리 할 수있는 최대 파일 크기는 두 가지입니다. PHP가 액세스 할 수있는 메모리 양과 SimpleXML을 사용하는 것이 좋습니다.

+0

이론적으로 메모리 제한이 php.ini에서 충분히 높게 설정되어 있으면 SimpleXML이 가능할 것입니다. 모든 파일 크기를 처리 할 수 ​​있습니까? 우리는 cron 작업으로 실행되기 때문에 퍼포먼스에 대해별로 신경 쓰지 않습니다. –

+1

예, SimpleXML로 2GB 인 XML 파일을 가져옵니다. 그래서 당신의 파일이 200MB라면, 나는 걱정하지 않을 것입니다. – KFoobar

+0

흠, 이상하다. 계속 XML을로드하지 못하고 오류 메시지가 표시되지 않는다. ARGH. 다른 파서를 시험해 볼게. –

관련 문제