[ cesare @ 18.02.2022. 10:17 ] @
Pozdrav svima !!!

Ukoliko ova tema nije za ovaj forum, zamolio bih admina da je prebaci u odgovarajuću.

Naime, obzirom da pravim Web aplikaciju (HTML + Javascript + PHP + MySQL), potrebno mi je da ista ima servis koji se vrti 24/7 i koji treba da proverava upise u MySQL, i da na osnovu njih dodeljuje zadatke (poslove) određenim timovima (ekipama na terenu).

Da li je dobro napraviti Web servis koji će uz pomoć tajmera da periodično proverava i dodeljuje zadatke, ili je ovo moguće rešiti na neki drugi način?

Unapred hvala !!!

Pozdrav.
[ Nemanja Avramović @ 20.02.2022. 19:43 ] @
U zavisnosti od toga šta tačno treba da se radi možeš da imaš npr. cron job koji pokreće PHP skriptu svakog minuta da odradi taj posao. Cron job ne može da se pokreće češće od svakog minuta, ali možeš da pokrećeš više cron jobova uz sleep komandu kako bi simulirao češće pokretanje skripte.

Alternativno, možeš da imaš CLI php skriptu koja se vrti u nedogled (white (true) { ... }) i stalno proverava ima li novih zadataka da dodeli. U tom slučaju ćeš verovatno želeti da koristiš Supervisor koji će osigurati da skripta stalno radi.
[ S A J A @ 21.02.2022. 08:32 ] @
S obzirom da piše "...koji treba da proverava upise u MySQL", to može da bude i neki triger na bazi. Tako da je teško reći šta je najbolje rešenje ako se ne zna tačno o čemu se radi. Na osnovu napisanog, meni deluje kao da ne treba nikakav dodatni džob. Sve bi trebalo uraditi na aplikativnom nivou. Na primer, ti zadaci koji se dodeljuju timovima, zadatak se dodeli valjda čim se upiše, zar ne?
[ Nemanja Avramović @ 21.02.2022. 11:14 ] @
Može da bude svašta, ali bez više detalja ne može dobiti bolje rešenje...
[ cesare @ 05.03.2022. 18:21 ] @
Više detalja....

Servisne ekipe su na terenu (nekloliko njih). Klijenti se loguju na web aplikaciju i prave zahteve za popravkama, na koje terenski timovi treba da reaguju. U zavisnosti od lokacije tima, trenutne zauzetosti i još nekih faktora, backend sistem (proces, web servis....) treba da stalno proverava status zahteva za popravkama sa jedne strane, i status timova sa druge, i da dodeljuje zadatke prvom raspoloživom timu servisera koji može da otkoloni prijavljeni kvar.

Pomenuti backed sistem - kako njega napraviti - kao web servis sa tajmerom koji se pali na npr. 1 min? Ili kao proces koji će se vrteti na operativnom sistemu servera i tako proveravati zahteve i dodeljivati poslove? Ili je bolje neko treće rešenje?

Pozdrav.
[ Tpojka @ 05.03.2022. 19:10 ] @
Pa servisni tim kad flag-uje [aktualni (onaj koji trenutno odradjuju)] task k'o odradjen, tj. kad mu postave status na nešto što flag-uje da su se riješili task-a, taj event treba da aktivira listener/subscriber koji provjeri slobodne taskove i dodijeli im sljedeći. Ne treba provjeravati taskove ako ekipe na terenu imaju aktualni task u procesu.
Pojašnjenje: recimo task ima statuse ['received', 'processing', 'done']. Ovo je simplifikovano i može tu da bude još masa statusa u zavisnosti koji sektori pojedinačno treba da obradjuju task (servis, računovodstvo, itd). Task koji se odradjuje je 'processing' i kad se prebaci u status 'done' u tom momentu treba provjeriti sljedeći task sa statusom 'received' i dodijeliti timu.

Ne mislim da treba da se vrti nešto da bi javljalo ekipi informaciju koja im nije potrebna.
Ekipi je informacija potrebna tačno onog momenta kad flag-uju trenutni task (koji trenutno rade) - k'o odradjen/arhiviran/prekinut/etc.

Pada mi na pamet i (recimo) Trello sa različitim kolonama za različite sektore odnosno kolonama za različite statuse task-a.
Da se vratim samo na servisni tim k'o jedan sektor, novi task se upisuje u Trello kolonu 'Received',
serviser ga uzima u rad prebacivanjem u kolonu 'Processing'.
Kad obavi task (karticu), prebacuje karticu u sljedeću kolonu 'Done' i uzima prvi iz kolone 'To Do' prebacujući ga u 'Processing'.
Ovo je vjerovatno (malo) komplikovaniji način gdje treba postaviti da web servis (sajt) koristi Trello API i Trello webhook-ove da manipuliše taskovima.

To su dva načina na koje bi se moglo riješiti bez cronjob-a il' AJAX-a.
[ dejanet @ 05.03.2022. 19:13 ] @
Mozda neki cronjob koji ce da poziva web service endpoint.

Druga mogucnost je da sam kreiras neki scheduler. Mislim da timer nije dovoljno dobro, moras da implementiras neko robusnije resenje, gde ces da tretiras scheduler parametre i job parametre/objekte zasebno, tako nesto.
[ eki_yu @ 06.03.2022. 08:50 ] @
Ja imam slican sistem, nema klijente, ali ima vise timova.

Za moj sistem nisu potrebne operacije kad niko nije prijavljen na sistem.

Prikazivanje je u realnom vremenu (osveavanje na 15 sekundi).

Struktura stranice se ucita jednom, a posle ajax preuzima json sa servera (15 sec interval) i popunjava stranicu javascript-om.

Kada se desi izmena na stranici, ajax obavesti server. U tom trenutku server proverava da li su akcije potrebne za tu promenu.

Sa ovim sistemom mogu da pokrenem akcije svaki 15 sekundi kad neko ima otvorenu aplikaciju, ili kada se napravi promena.
Na mom sistemu jedina akcija koja se proverava an 15 sekundi je da li je korisniku dozvoljen pristup sistemu, sve ostale akcije se desavaju kada nastane promena.

Ako se pametno koristi, ne optercuje sistem, i ne koristi preveliku kolicinu podataka. Kada sam testirao upotrebu, mobilni telefoni koji su imali konstantno otvorenu stranicu su trosili oko 1.5 do 2.5 Mb na sat.

Za ovo sam koristio PHP + mySQL + javascript

Nadam se da ti ovo koristi kao ideja.




[Ovu poruku je menjao eki_yu dana 06.03.2022. u 10:08 GMT+1]

[Ovu poruku je menjao eki_yu dana 06.03.2022. u 10:09 GMT+1]