2009-06-05 4 views
3

큰 PDF 파일을 생성하는 PHP 프로젝트를 상속 받았으며 대개 수천 페이지와 몇 개의 서버 메모리 이후에 질식합니다. 이 프로젝트는 PDFLib을 사용하여 '메모리에있는'파일을 생성했습니다.PDFLib PHP 리소스에서 파일을 플러시하지 않음

나는 이것을 고치려고했기 때문에, 내가 한 첫 번째 일은 PDFLib 출력을 메모리에 저장하는 대신 파일로 보내는 것이었다. 문제는 여전히 PDF 메모리를 구축하고있는 것 같습니다. 그리고 메모리의 대부분은 OS로 반환 된 적이없는 것 같습니다. 결국 모든 것이 질식하고 죽습니다.

큰 PDF의 단편을 작성하여 프로그램을 작업 할 때 데이터가 end_document()의 파일로 완전히 플러시되지 않은 것처럼 보입니다. 오류가 없지만 PDF를 읽을 수 없으며 16 진수 편집기에서 열면 스트림이 불완전하다는 것을 알 수 있습니다.

나는 누군가가 비슷한 어려움을 겪었기를 바라고 있습니다.

+0

Q : 서버가 수천 페이지의 PDF 문서를 생성합니까? 아니면 서버가 수천 개의 PDF 파일을 생성합니까? PHP 프로그램 CLI 또는 웹 기반입니까? 예, 어떻게 시작 되었습니까? 얼마나 오래 기억에 남는가? – 0scar

+0

많은 페이지가 아니라 많은 PDF가 있습니다. 아파치 웹 기반 (mod_php)입니다. 일부 메모리가 되돌려지고 서버 재부팅 때까지 많은 메모리가 반환되지 않습니다. –

답변

2

해결! 문서 범위가 주어지기 때문에 각 텍스트 흐름에서 PDF_delete_textflow()를 호출해야하며, 문서가 닫힐 때까지 사라지지 않습니다. 그 시점 이전에 사용 가능한 메모리가 모두 소진 된 이후로 사라지지 않았습니다.

1

각 페이지를 닫을뿐만 아니라 문서를 닫아야합니다. 이것은 모든 서면 페이지 끝에 "end_page_ext"를 호출하여 수행됩니다.

또 다른 PDF에서 페이지를 가져 오는 경우 가져온 각 문서를 완료 한 후에 각 단축 페이지 다음에 "close_pdi_page"를 호출하고 "close_pdi_document"를 호출해야합니다.

관련 문제