Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

EstiloFacil

Problemas de performance com MPDF

Recommended Posts

Pessoal, estou gerando um pdf a partir de um html com imagens e css com a classe MPDF... ele gera perfeitamente para relatorios pequenos (20 registros, etc.. ) mas tem um relatório aqui com 52 registros que quando peço pra ele gerar, ele trava o apache... o consumo de cpu do processo fica em 92% e a memória estourando os 512MB que libero pro processo.

 

Alguém já passou por isso? Tentei atualizar a versão da 5.1 pra 5.4 mas o defeito continuou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca usei a MPDF, mas posta como está fazendo, de repente pode ter algum gargalo que possa ser o real problema.

 

Se constatado que não, experimente a FPDF :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

É bem simples a forma que fiz... veja:

 

$psConteudo = $this->load->view('relatorio', $dados, TRUE); //renderiza a view html e armazena o conteúdo na $psConteudo

set_time_limit(0);

ini_set('memory_limit', '1024M');

 

require (_RAIZ . _DIR_MPDF . '../html2pdf/html2pdf.class.php');

$html2pdf = new HTML2PDF;

$html2pdf->WriteHTML($psConteudo);

$html2pdf->Output('sdfasdfasdf.pdf');

 

Ops, postei o método errado... segue o verdadeiro:

 

$psConteudo = $this->load->view("relatorio", $dados, TRUE); //renderiza e armazena o conteúdod a view na $psConteudo


set_time_limit(0);
   ini_set('memory_limit', '1024M');

   include (_RAIZ . _DIR_MPDF . 'mpdf.php');

   mb_convert_encoding($psFooter, 'ISO-8859-1', mb_detect_encoding($psFooter));
   $html = $psConteudo;
   mb_convert_encoding($html, 'UTF-8', mb_detect_encoding($html));

$mpdf=new mPDF('','A4',0,'',3,3,4,20);

   $mpdf->allow_charset_conversion=true;
   $mpdf->charset_in='ISO-8859-1';
   $mpdf->SetDisplayMode('fullpage');

   $mpdf->SetHTMLFooter('
       <table width="100%" class="footer">
         <tr>
           <td width="auto">
               <img src="../imagens/LogoFootter.png" height="14"/>
           </td>
           <td width="75%">
               <span>Sistema de gestão integrada de animais da raça Girolando.</span>
           </td>
           <td width="20%" style="text-align: right;">Página: {PAGENO} de {nb}</td>
         </tr>
       </table>');

   $mpdf->WriteHTML($html);

   $mpdf->Output($psTitulo.".pdf",'D');
   exit();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele possui esses problemas de memória, eu mesmo já tive.

 

Em um projeto eu precisei gerar relatórios em PDF, eu cheguei à elaborar uma lista de geradores que convertam HTML para PDF:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que já faz tempo, mas achei útil publicar aqui...

Resolvi meu problema colocando o php que usa a mpdf em outro servidor, com uma versão do ubuntu e do apache mais atualizada.

Agora eu gero qualquer pdf, mas teve um cliente que foi exportar um relatório que contém várias coisas, como imagens, umas 4 ou 5 tabelas, sendo 2 delas com cerca de 1700 linhas.. isso levou muuuuuuito tempo, aproximadamente 3 minutos pra gerar, mas gerou e não travou o servidor.

 

Agora estou pesquisando maneiras de deixar esse sistema mais veloz. Se alguém souber... agradeço muito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu queria saber como que o Google (não Chrome) gera os PDF's dele. Uma vez abri pelo Firebug e vi uma requisição cuja resposta tinha o nó root nomeado como pdf2xml

 

Provavelmente se jogar isso no Google vai aparecer toneladas de resultados, mas imagina como não daria pra brincar com um negócio desses. :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interessante, pode-se procurar por isso no código-fonte do próprio Chrome e tentar encontrar o trecho que gera, pode ser que exista algo para PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.