Puncte:1

Cum să știi dacă un proces batch încă rulează?

drapel lb

Am un formular cu 5 butoane și fiecare buton rulează un lot diferit, unele procese batch durează câteva minute. Vreau să blochez butonul dacă procesele batch rulează deja, deoarece alți administratori de utilizator pot accesa același formular și pot încerca să ruleze lotul care rulează deja în acest moment pentru alt utilizator.

Cum pot să știu ce procese batch rulează? Încerc să folosesc batch_get(); dar de fiecare dată când această funcție returnează o matrice goală.

Puncte:1
drapel cn

Conform API, odată ce definiți un lot, furnizați funcția de apel invers care va fi executată când lotul se termină, astfel încât până când acest apel invers este apelat, lotul este încă în desfășurare.

Deci, în mod ideal, definiția dvs. de lot ar efectua o acțiune inițială pentru a vă place să setați o stare DB pe care o puteți interoga și, dacă este blocată, nu permiteți butonul și, odată ce ați finalizat apelarea, deblocați butonul din nou.

Mauricio avatar
drapel lb
Mulțumesc @jbarrio, în prezent fac asta așa cum sugerezi tu, folosesc `cod \Drupal::state()->set('batch_import_'. $sourceId, serialize($result_source));` pentru a seta o variabilă „în rulare” pentru a o cunoaște. Dar acest lot este un lot progresiv, deci dacă utilizatorul închide această filă, lotul nu se termină niciodată și nu se încadrează niciodată în callback-ul final.
jbarrio avatar
drapel cn
Ei bine, sincer să fiu, am răspuns exact la ce ai întrebat. Ceea ce menționați acum este o altă cerință. Dar, în noul tău scenariu, dacă un utilizator închide fila și lotul se blochează, poți rula un cron pentru a curăța loturile blocate din tabel și a reseta starea batch_import_ID, astfel încât butonul să poată fi vizibil din nou.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.