Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]mPDF i 50 stron - długie oczekiwanie
snemeii
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.05.2012

Ostrzeżenie: (0%)
-----


Witajcie,

Od pewnego czasu na swojej stronie wykorzystuję mPDF do generowania PDFów, dziś napotkałem na problem, ponieważ miałem wygenerować raport składający się z około 50 stron i trwało to i trwało. Niestety limit czasu upłynął i skrypt się nie wykonał, tak więc zwiększyłem

To oczywiście pomogło ale mimo wszystko trzeba czekać około 30s żeby otrzymać PDF. Czy jest coś co mogłoby przyspieszyć generowanie tego pliku, czy mieliście podobne problemy, czy może nic sie już z tym nie da zrobić ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
snemeii
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 10.05.2012

Ostrzeżenie: (0%)
-----


OK dajmy na to taki kod wykonujący:

  1. $html = '';
  2.  
  3. for ($i=0; $i<=5000; $i++)
  4. {
  5. $html .= " ";
  6. $html .= md5($i);
  7. }
  8.  
  9.  
  10.  
  11. include("../modules/pdf/mpdf.php");
  12.  
  13. $mpdf=new mPDF('utf-8','A4','12','10', 5, 5, 5, 5);
  14.  
  15. $mpdf->AddPage('L');
  16. $mpdf->SetHTMLFooter("<div style='text-align:center; font-size:12px;'>strona {PAGENO}/{nb}</div>", 'O',true);
  17. $mpdf->WriteHTML($html);
  18. $pdf = $mpdf->Output('', 'S');
  19.  
  20.  
  21. die('Some data has already been output to browser, can\'t send PDF file');
  22. header('Content-Description: File Transfer');
  23. header('Content-Transfer-Encoding: binary');
  24. header('Cache-Control: public, must-revalidate, max-age=0');
  25. header('Pragma: public');
  26. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
  27. header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  28. header('Content-Type: application/force-download');
  29. header('Content-Type: application/octet-stream', false);
  30. header('Content-Type: application/download', false);
  31. header('Content-Type: application/pdf', false);
  32. if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
  33. header('Content-Length: '.strlen($pdf));
  34. }
  35. header('Content-disposition: attachment; filename="document.pdf"');
  36. echo $pdf;


Do tego dochodzą jeszcze pliki wchodzace w skład mPDF, ale tam nic nie zmieniałem i wszystkie ustawienia są standardowe.

Kod ambitny nie jest ale jest to przykład... generalnie ta pętla generuje pdfa o 48 stronach, a czas wykonywania to 55sekund ;-(
Z ciekawości zmierzyłem czas zapełniania zmiennej $html przez pętlę ale to trwa 1-2s.
Waga wygenerowanego pdfa to 186KB.

Ten post edytował snemeii 6.11.2012, 19:22:25
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 17:52