2014-12-11 3 views
0

동일한 PDF에서 tcpdf 라이브러리를 사용하여 대량 인보이스 (인쇄용)를 생성하려고합니다. 문제는 서버를 생성하는 데 너무 많은 페이지 (50 페이지 이상)가이 오류로 인해 충돌하는 것입니다.여러 페이지의 메모리 문제로 생성 된 PDF 다운로드

치명적인 오류 : 배기 33,554,432 바이트 허용 메모리 크기가 줄 16,680

에 /home/user/public_html/lib/tcpdf/tcpdf.php로 (72 바이트를 할당하려) 그래서 최대 것을 알 수있다 내 계정의 메모리 제한은 335544320 바이트입니다. ini_set('memory_limit', '-1');을 사용해 보았지만 335544320 바이트를 전달할 수 없습니다. 내 localhost에서 모든 memory_limit 사용할 수 있기 때문에 확인 작동합니다.

그래서 문제는 어떻게 해결할 수 있는지입니다. 모든 송장이 포함 된 PDF를 보거나 다운로드하십시오. 메모리 문제로 인해이 작업을 수행 할 수 없다면 각 PDF를 폴더에 저장 한 다음 폴더를 압축하여 다운로드하십시오.

/** 
* @param $diskcache (boolean) If TRUE reduce the RAM memory usage by caching temporary data on filesystem (slower). 
*/ 
public function __construct($orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8', $diskcache=false, $pdfa=false) 

또 다른 옵션은 별도의 PDF 파일로 개별 페이지/송장을 생성 한 다음 가능한 모든 솔루션을 사용하여 병합하는 것입니다

+1

로컬 파일 저장소의 개별 파일에 데이터를 덤프하고 'ZipArchive'를 사용하여 메모리를 모두 플러시 할 수 있다면 간단하게 작동합니다. – sjagr

+0

@sjagr 각 pdf를 열어 개별적으로 인쇄하는 것이 효과적 일 수는 있지만 이상적인 것은 아닙니다. – Marek

답변

0

TCPDF의 생성자는 $diskcache 매개 변수가 있습니다. Merge pdf files with php을 참조하십시오.

+0

내가 diskcache를 사용하더라도 같은 오류가있는 것으로 보입니다. – Alex

관련 문제