PHPExcel 프레임 워크를 사용하여 mysql 쿼리에서 매우 큰 엑셀 문서를 작성하려고합니다. 나는 페이지가 오류로 플래그되는 경우 (의에 대해이 나) 5000 행 표시를 명중 할 때까지PHPExcel - 청크로 쓰기/추가
모든 것이 잘 작동 : 문서화 나는 이것을 알고
Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate yyy bytes) in zzz on line aaa
, 나는이에 메모리 할당을 조정 한 서버하지만 여전히 나는 천장에 부딪치고있다. 포맷팅 기능을 끄려 고했지만 실제로는 필요합니다.
작은 청크로 작성하거나 엑셀 문서에 추가하여 메모리 할당이 고갈되지 않도록하는 방법이 있습니까? 나는 페이지 라인의 라인을 따라 1000 라인을 말하고, 그 다음에 리다이렉트하고 다음 1000 트랙을 GET을 사용하여 처리한다고 생각하고있다. 예를 들어 :
index.php?p=0
index.php?p=1000
에
리디렉션하지만 모든 일을 열지 않고 기존 문서에 추가 할 수있는 방법을 찾을 수 없습니다.
캐시! 나는 그걸 정하지도 않았어, 좋은 전화. 빠른 후속 질문, 쓰기가 많은 대용량 문서의 경우 어떤 캐시 방법을 선택합니까? 나는 단지 약 6,000 컬럼의 10,000 개의 행을 처리했지만, 60,000 개의 버그가있는'cache_to_discISAM'을 시도했습니다. 나에게 잘못을주지 마라 10,000는 굉장하고 충분할 것이다 - 그러나 나는 나의 애플 리케이션을 테스트 스트레스를 좋아한다. 수정 -이 경우에 속도에 대해 신경 쓰지 않아요 – Chris
편집 2 - 아파치/리눅스 서버에서 실행 중입니다 (따라서 캐시가 승리합니다). – Chris
현재 모든 프로덕션 릴리스 캐시 방법은 적어도 메모리의 "셀 맵" ", 그래서 (예를 들면) DiskISAM은 phpTemp처럼"메모리에있는 "파일에 셀 참조의 크기와 위치를 가지고 있습니다. 프로덕션 코드에서 가장 효율적인 메모리 캐싱 메커니즘은 memcache, APC 및 WinCache입니다.이 맵은 단순한 "셀이 있음"부울입니다. 최신 버전의 SVN 코드는 SQLite를 캐싱 옵션으로 추가하여 훨씬 더 효율적입니다 ("메모리 내"맵이 전혀 없으며 모든 것이 SQLite 내부에 있음) –