Laravel, generare PDF dureaza foarte mult

Salutare.

Am o mica problema intr-o aplicatie laravel.
Practic am un observer care la fiecare store executa codul de mai jos

 if (request()->get('pickup_sign')) {
            $pickup_s = request()->get('pickup_sign');
            $data = ['title' => $pickup_s];
            PDF::setOptions(['dpi' => 150, 'defaultFont' => 'sans-serif']);
            $pdf = PDF::loadView('pickupsign', $data)->setPaper('a4', 'landscape');

            $content = $pdf->download()->getOriginalContent();

            // Generate pdf file named from input text
            Storage::put('public/PDF/'.$pickup_s.'.pdf', $content) ;
        }

problema este ca dureaza foarte mult (in jur de 1 min sta in loading). Ar avea idee cineva de unde problema asta sau cum pot optimiza acel cod?
Multumesc!

Tu executi sincron codul asta? Mie asa mi se pare. Muta-l pe o coada in primul rand, dupa aia mai vezi tu cum optimizezi si refactorizezi.

1 Like

Foloseste https://laravel.com/docs/master/queues altfel nu ai ce sa faci pentru a nu bloca procesul. Ce librarie folosesti?

N-am înţeles cu ce-l ajută pe om asincronismul/multithreading-ul/whatever. Întrebarea e de ce naiba durează un minut generarea unui pdf :slight_smile:

@DragusPatrick: vezi şi tu care bucată din cod provoacă întârzierea aia imensă şi mergi pe firul ăla. Dacă într-adevăr acea întârziere nu poate fi rezolvată (din motive independente de tine), abia atunci te gândeşti la o strategie de a executa asincron acea procedură.

Posibil sa fie si o problema cu lib-ul folosit, din cate imi dau seama folosesti laravel-pdf care foloseste mPDF. Sincer nu m-am uitat in detaliu, dar probabil poti cauta pe google “mpdf slow” de exemplu, poate te incadrezi la vreun bug / edge case etc. Poti incerca si alt lib / binary.

După lungi căutări am găsit un issue pe stackoverflow, e o problema a librăriei, la layout-uri mai complexe da problema asta, și practic e de la CSS. Dacă pun un View simplu cu un singur cuvânt se generează imediat