2012-11-07 2 views
0

나는 simplexlsx 클래스를 사용하여 38879 행의 데이터를 읽으며 (1 시트에서) 메모리에 문제가 있습니다 (메모리 부족). 내 서버의 메모리 크기는 48GIGS이고 memory_limit (php.ini)를 9000MB로 설정했지만 문제가 여전히 남아 있습니다! 내가해야 할 일을 말해 줄 수 있니?simplexlsx out of memory

+0

오류가 발생했습니다 : 치명적인 오류 : C : \ xampp \ htdocs \ class \ xlsx.php에 메모리 부족 (할당 된 83099648) (할당 된 34791104 바이트) 시도 on line 359 –

+0

메모리 제한을 변경 한 후 서버를 다시 시작 했습니까? –

+0

당연히 그렇습니다. 서버는 아니지만 PHP/apache 서비스 –

답변

0

특정 이유가없는 한 수천 행의 데이터를 처리하는 것은 거의 불가능합니다. 이것은 코드에서의 메모리 낭비에 기인합니다. 상황에 맞는 이야기는 스크립트가 거대한 배열 (또는 객체)을 만드는 것입니다. 메모리 제한을 높이기보다는 코드를 변경하여 메모리를 효율적으로 사용하는 것이 좋습니다.

나는 SimpleXLSX에 대해 들어 본 적이 없지만 PHPExcel을 사용해 본 적이 있습니다. 문제가 발생한 적이 없습니다. PHPExcel을 사용하여 개편하기에 너무 많은 작업이 아니라면 사용하는 것이 좋습니다.

https://github.com/PHPOffice/PHPExcel

+0

PHPExcel도 PHPExcel에서 동일한 문제를 수행하기 때문에 사용하고 있습니다. 캐싱 메서드를 사용해 보았지만 여전히 효과가 없습니다. 설명해 주시겠습니까? –

+0

스프레드 시트에서 데이터를 수집하는 코드를 게시 할 수 있습니까? – 27A

+0

확실합니다. http://pastebin.com/Zgiue2Hh –

0

SimpleXLSX 및 PHPExcel 많은 것들을 정말 잘하지만 큰 스프레드 시트를 읽는에서 모두 끔찍한 (당신이 모든 것을 잘 할 수 없다!).

나는 PHP Excel (캐싱, 데이터 청크 읽기 등)의 최적화를 사용할 때도 똑같은 문제에 직면했으나 제대로 작동하지 않았습니다. 메모리 부족 오류가 수정되었지만 큰 파일조차 읽지 않아도 영원히 걸렸습니다.

그래서이 규모 문제를 해결하기 위해 라이브러리를 만들었습니다. 시도해보고 그게 도움이되는지 알려주세요 : https://github.com/box/spout