2010-02-24 5 views
3

DOMPDF를 사용하여 한 스크립트에서 약 500 개의 보고서를 생성하고 있습니다. 약 10-15 개의 PDF가 생성 된 후 메모리가 부족합니다.dompdf 메모리 문제

디버깅에서 글꼴 로딩에 도달 할 때마다 8M이로드되는 것처럼 보입니다.하지만 글꼴 캐싱 코드로 처리해야하는 것처럼 보입니다.

여기에 무슨 일이 벌어지고 있는지 아이디어가 있습니까? 간단한 코드 스 니펫을 게시하고 싶지만 대부분은 여러 레이어로 추상화되어 있으므로 간단한 복사/붙여 넣기 만이 아닙니다.

+0

는 몇 번이나 글꼴 당로드 PDF? –

답변

1

첫 번째가 원격으로 상업용 인 경우 먼저 Prince XML을 얻으십시오. 다른 HTML to PDF 솔루션보다 훨씬 빠르고 빠릅니다 (그리고 나는 그것들 모두를 보았습니다). 저장된 개발자 시간에 비용이 신속하게 회수됩니다.

둘째, 가장 빠른 해결책은 아마도 메모리 누수 문제를 해결하기 위해 각 보고서를 별도의 프로세스로 인쇄하는 것입니다. 명령 줄에서 실행중인 경우 외부 루프를 각 보고서에 대한 프로세스를 시작하는 셸 스크립트와 같은 것으로 지정하십시오. 웹에서 실행되는 경우 각 스크립트에 대한 프로세스를 포크 할 수있는 OS를 사용하고 있어야합니다.

Convert HTML + CSS to PDF with PHP?을 살펴보십시오.

1

cletus에 표시된 것처럼 DOMPDF를 사용하면 가장 빠른 해결책은 각 보고서를 별도의 프로세스로 렌더링하는 것입니다. 실제 렌더링을 수행하는 하위 스크립트 (exec 사용)를 호출하는 마스터 스크립트를 작성할 수 있습니다. DOMPDF 지원 그룹의 this discussion에서 볼 수 있듯이 성능면에서 약간의 향상을 줄 가능성이 있습니다.

문제를 나타내는 일례없이 메모리 사용과 관련하여 어떤 일이 벌어지고 있는지 말하기는 어렵습니다. 나는 하나의 스크립트에서 다중 인스턴스에 대한 DOMPDF와 CPDF 렌더링 엔진의 최적화가 많이 있다고 생각하지 않는다. 따라서 정적 변수를 사용하여 해당 데이터를 캐싱 할 수는 있지만 매번 메모리에로드되는 글꼴 일 수 있습니다.