Help! HTML

Fred

Membru Senior
Joined
Jan 4, 2019
Noob question. Nu e de HTML, are mai mult legatura cu procesul de afisare si actualizare prin AJAX, dar e pe-aproape.

Am o interfata prin care incarc un ZIP pe un site (REST API, custom made), apoi il dezarhiveaza intr-un folder si porneste executabilul din el care face ceva in CLI, eventual scrie intr-un fisier text un soi de log daca exista probleme, si termina. Nu e mare scofata, dar tot procesul poate sa dureze cateva minute, gen 2-3-5 minute. Asta inseamna ca ori exista un apel AJAX catre acel REST API care sa faca totul dintr-o bucata, cu un timeout urias si fara nici un fel de control intermediar, ori ecranul meu web based face apelurile pe rand, gen dupa ce incepe incarcarea sa faca refresh la fiecare 30 de secunde, la refresh sa citeasca starea curenta a operatiunii (gen: upload terminat cu succes, dezarhivare in curs, dezarhivare terminata, executie in curs, executie terminata) si in functie de asta sa lanseze urmatorul pas.

Prima varianta, cu un singur apel lung, mi se pare riscanta, daca e vreo problema singura varianta e sa o ia de la capat. Varianta a doua pare un pic neprietenoasa pentru ca face o reincarcare completa a paginii la fiecare X (30) secunde si sa lanseze urmatorul pas doar daca a terminat precedentul, dar poate sa iasa lenta: daca fiecare pas dureaza 31 de secunde atunci o sa ruleze la cate 60 de secunde (la primul refresh inca nu a terminat, urmatorul e dupa inca 30). Ma gandeam la o varianta intermediara, gen lansat tot procesul si la fiecare 30 de secunde doar sa afiseze statusul curent, dar incepand cu un file upload care poate fi el lent (1-2 minute) trebuie sa astepte transferul, nu prea exista alte solutii si atunci nu pot sa fac auto-refresh pana nu termina.

Ma intereseaza doar daca ma uit in directia potrivita, nu am mai dat de asa ceva pana acum. Teoretic e pentru serviciu, practic nu sunt platit pentru asa ceva, e o mizerie in genul "ne asteptam sa ne ajuti si cu chestii care nu sunt in fisa postului" si nu imi permit acum sa refuz, ar insemna sa schimb jobul si nu e momentul potrivit.
 

miahi

Wizzard
Sugar daddy
Joined
Aug 1, 2004
Location
Unreal Estate, Ankh-Morpork, Discworld
Apelul lung e big no-no; chiar dacă tu ai setat aplicația cu timeout 3 ore, vine pe urmă cineva cu un nginx în față setat cu timeout 30 de secunde și se duce naibii totul. Am văzut de prea multe ori asta în producție.

De ce ai nevoie de o reîncărcare completă a paginii la varianta a doua la fiecare verificare? Asta se făcea acum 15 ani, de-aia s-a inventat AJAX :smile:. Pui un schedule cu un get job status (ajax) din 10 în 10 secunde, care ia un flag de status din backend (rapid, doar îi zice da sau ba) și faci refresh-ul de pagină (dacă e obligatoriu, că la fel ai putea lua și ce trebuie să updatezi în pagină) doar când ai status finalizat. Și poți face și upload de fișiere cu AJAX, și până la urmă iese un SPA :biggrin:.
 

Fred

Membru Senior
Joined
Jan 4, 2019
Upload de fisiere oricum fac cu AJAX, abia acum mi-a picat fisa ca am mai facut o chestie din asta cu un refresh la un progress bar pentru o procesare server side care dura cateva ore. Damn, I'm stupid.
 
Top Bottom