{% if index.loop % 24 == 0 %}
<div class="spacer"></div>
{% endif %}
po stronie twiga, gdzie klasa "spacer" miała wysokość ustawioną na 2px. Dodaliśmy jeszcze testowo czerwone tło i pięknie nam ten "spacer" pojawiał się dokładnie na końcu każdej kartki. Chwilę później wykorzystałem też nowo nabytą wiedzę o index.loop, żeby policzyć liczbę naklejek.
Trochę jeszcze poklikałem, wszystko działa i super, no to pora na test na nieco większej liczbie adresatów niż 500+. Żeby mieć odpowiedni rozmach, zaznaczyłem wszystkie osoby w bazie, a więc 43000+ i kliknąłem "Wygeneruj etykiety". Wcześniej, po chwili pojawiał się modal, który zrobiłem, z informacja, że rozpoczął się proces generowania. Teraz czekam i zerkam na devtools z przeglądarki, a tam wisi sobie szary POST i wisi. Czekam, czekam, w końcu się zazielenił i pojawił sie wyczekiwany modal. Czas oczekiwania na odpowiedź na ten request wyniósł ponad 7 sekund, no ale cóż... Uruchamiam więc proces generowania etykiet w konsoli. Pojawia się status, że przystępuje do generowania ponad 26000 naklejek. Czemu o tyle mniej? Otóż nie wszyscy z tej bazy wyrażają chęć otrzymywania korespondencji, więc bez sensu dla nich robić naklejki skoro nic im nie będą wysyłać. Czekam, czekam, sruuu, coś na czerwono. Patrzę a tam timeout większy niż 60 s i do widzenia. No to szukam o co chodzi, ale okazuje się, że nie tylko ja, bo innym też się skrypty wywalają z takim timeoutem. Szukam skąd to się bierze i nie była to komenda konwertera, tylko mechanizm Symfony. Próbowałem to obejść przez plik pośredni, ale na nic się to zdało. Wreszcie zaczęliśmy grzebać razem i okazało się, że ten timeout jest na sztywno ustawiony i niby jest metoda setTimeout(), tylko szkoda, że prywatna. Kolega dorwał się więc do klawiatury i shackował system pisząc wrappera wokół oryginalnego generatora pdf-ów. Po kilku poprawkach zaczął działać, więc wygenerowałem te tysiące etykiet i otworzyłem pdf-a. 1097 stron pełnych nazwisk i adresów robi wrażenie. Pewnie jeszcze większe zrobi na drukarce, które je dostanie do wydruku. Czas oczekiwania wyniósł ponad 900 sekund przy odpaleniu komendy systemowej do konwertera, a tutaj ze skryptu trochę dłużej, ale to dopiero początek zmartwień. Teraz kolejny etap - sortowanie. Klient zażyczył sobie, aby najpierw były naklejki dla mieszkańców Warszawy. I teraz się zaczęło szukanie sposobu jak to zrobić najlepiej. Najpierw poległem na próbie stworzenia zapytania przy użyciu QueryBuildera, bo przerosła mnie liczba encji do skakania (ponownie). Kolega zaproponował metodę usort(), ale też miałem problem z napisaniem callbacka, więc zrobił to za mnie. Zadziałało na małej próbce, więc odpaliliśmy na większej. Długo to trwało, więc przerwałem skrypt po 20 minutach, bo w zasadzie nie byłem pewien na jakim etapie wisi. Dodałem więcej informacji co krok i odpaliłem ponownie. Zatrzymał się na sortowaniu. 15 minut później poszedłem do domu i zostawiłem włączony komputer. Czekam na jutrzejsze niespodzianki i kombinowanie co z tym zrobić. Zwłaszcza, że zostało mi w tym zadaniu jeszcze trochę do dopisania i chciałbym to wreszcie jutro skończyć, więc liczę, że całkowity czas generowania takiego dużego pdf-a będzie w miarę znośny...
Brak komentarzy:
Prześlij komentarz