IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Non-stop beh skriptu - sledovanie nejakej udalosti

Aktivity
Avatar
Filip
Člen
Avatar
Filip:8.6.2020 14:49

Zaujima ma, ako sa vo vseobecnosti riesi, ak nejaka uloha (skript), musi bezat nonstop - napriklad nonstop overovanie nejakej ceny (kurzu) alebo ci prisiel email na danu e-mailovu adresu. V co najkratsom casovom intervale, ale pre zaciatok povedzme 1 sekunda.

S mojimi doterajsimi poznatkami by som to riesil cez CRON, napriklad. spustal by sa skript kazdych 5 minut, a v nom by sa v cykle kazdu sekundu nieco overovalo (cena, email)...max. beh skriptu by bol na tych 5 minut (aby kontrola bezala teda kazdu sekundu)

Myslim, ze to asi nebude optimalny sposob, preto som zalozil toto vlakno. Mozno by problem nastal, kleby sa tych "veci" overovalo viacej, napr. keby skript kontroloval nie iba jednu cenu ale az 500 cien... (tuna si tiez niesom isty, ale myslim ze kazda cena konkretneho instrumentu sa "stahuje" osobitne, cez API danej burzy, a tam by mohlo nastat podstatne oneskorenie).

Diky za kazdu radu ci napad.

Zkusil jsem: Zatial ma to zaujima teoreticky, ako sa riesia taketo ulohy.

Chci docílit: Chcem si naprogramovat web. sluzbu, ktora bude nonstop sledovat nejake udalosti, napriklad aktualny kurz (cenu na burze...) alebo kontrolovat email adresu. V casovom intervale max. 1 sekunda. :-)

Editováno 8.6.2020 14:50
 
Odpovědět
8.6.2020 14:49
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.6.2020 8:05

" v cykle kazdu sekundu nieco overovalo"
Tomu se rika spatny navrh. Udalost zmeny nenastava kazdou sekundu, ze?

Kurzovni listek cnb se take nemeni tak casto.
Email staci kontrolovat parkrat za minutu.
Z mistnosti chatu mam vysledovany idealni cas 17s

Nicmene, plati, co jsem psal, mas spatny navrh. Musi to vymyslet jinak. Treba stahovat aktualni data skoro vubec a casteji, kdyz se uzivatel diva.

Jo, resi se to pres cron. Ale, pro 1s interval mas koupeny vlastni server nebo nejaky premiovy balicek.

V php se da vypnout limit a muzes si tam spustit web-socket server, pro usporu dat i hw serveru. Tam se odesila ping o velikosti asi 3 znaky pro udrzeni spojeni. A kdyz php script vyhodnoti zmenu u sledovaneho, tak by to rozeslal do vsech pripojenych socketu.

V js se da udelat setinterval a volat httprequest (ajax) nebo i pomoci iframu. Ale je to strasny zrout dat, protoze jen http request miva hlavicku od 500 do 1000 znaku. K tomu pribalis 300 znaku kurzovni listek :) A navic, kdybys to udelal chatovacim zpusobem, tak se to obnovuje kazdych 17s, bez ohledu, zda nastala nejaka zmena ci ne, treba. Cili, rekneme 1200/17 = 70b/s
Pres web-sockety je tam ping, nic, nebo novy listek. Novy listek bude rekneme v intervalu 5 min. Pingu bude rekneme 3 / min (tech 17s). (300 + 3x3x5) / 5 = 345 / 5 / 60 = 69 / 5 = 1b/s (to je pomerne rodil, 70x)

 
Nahoru Odpovědět
9.6.2020 8:05
Avatar
Filip
Člen
Avatar
Odpovídá na Peter Mlich
Filip:9.6.2020 13:58

Ano, prisiel som nato, ze stahovanie aktualnych cien sa riesi cez websocket. Cena nejakeho instrumentu sa moze kedykolvek prudko zmenit a nato musi reagovat skript. Mam na mysli ceny kryptomien a tam behom jednej minuty sa moze cena zmenit aj +/- 10%

Navrh nemam ziadny, to bola len uvaha, preto som zalozil toto vlakno... ako sa to ma spravne robit :-)

Potrebujem sledovat email dajme tomu kazdych max. 5-10 sekund. Na email pride prikaz, podla ktoreho sa spusti dalsi skript. V podstate by to malo byt okamzite, ale technicky to asi neni mozne, takze do tych 10 sek. je to v pohode.

 
Nahoru Odpovědět
9.6.2020 13:58
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:9.6.2020 15:20

Myslim si, ze...

Pokud by nekdo zatezoval muj server kazdou 1s, a neslo by o stream, tak ho asi odpojim :) Zalezi na tom, jak by to zatezovalo. Kdybych nejaky provozoval.

Pokud je soucasti cesty mail, tak ten muze mit zpozdeni 20s-5min nebo 2-x dni (kdyz neco moc selze). To uz si vnasis pomerne slusnou chybu, zpozdeni.
Pokud se jedna o reagovani na mail, tak tam zakon umoznuje tusim 2 dny zpozdeni, max. Takze nejake sekundy nehraji roli.
Cili, pokud by to bylo mozne, tak clovek, co ti posila maily, tak at pouziva nejaky tvuj produkt typu chat, kde klikne na 1 tlacitko a hned ti to posle zpravu, pripadne to hned samo reaguje. Nez on napise mail a nez se mail doruci...

Cesta je mailu je takovahle, obvykle:

filtrovaci spam hw -> filtrovani preposilani na hw -> server hw -> filtrovani preposilani na sw porty ->program na serveru mail (mail service/sluzba)

Kdyby to jinak neslo, tak nejrychlejsi cesta je mit vlastni hw, kde takove maily zachytavas jeste pred tim, nez se preposilaji na nejaky mail server.
Kdyz to nejde a muzes mit vlastni server s mailem, pak bych ty maily zachytaval python nebo c++ scriptem, ktery bezi jako sluzba, asi pomoci toho cronu. Presmeroval bych maily na tu sluzbu primo. Aby to neslo na mail server, ale tam.
Cili, navrhuji to zachytavat pred kazdou z tech sluzeb a presmerovat to primo na tvuj program, pokud ti jde o milisekundy. Idelani stav, kdyz na ten mail nechodi zadne jine maily.

Pokud to neni idealni stav a trvas na vybirani schranky, tak rychlostne jsou na tom lepe python a c++ programy nez php. Php umi vybirat postu treba z imapu a tusim se to resi stahovanim jen hlavicek. Takze, pokud dostanes do hlavicky podstatne informace, tak body muze byt prazdne a ani se nemusi vybirat ze serverove sluzby mail-service. A cast od casu musis ale smazat schranku mailu.

Jestli ti jde o kseftovani s fondy, kryptomenami, tak na to jsou specializovane firmy a sw, ktery dela prave toto a dela to automaticky. A je dan nejaky limit, jak casto se muze pripojovat na burzu. Ale ten interval proti doruceni mailu muze byt i 100 kratsi :)
Vetsinou je cizi, neschvaleny sw proti pravidlum a velmi rychle se blokuje a nahrazujes veskere skody, ktere jsi zpusobil. Takze, radeji se zeptej tam, kde bys neco takoveho chtel provadet, at to mas posvecene, at te treba muzou upozornit, ze ti to dovolili, ale zpusobujes jim zatez a ze te odpoji. Nez, aby ti klepala na dvere policie ze odhalili nejakou nezvyklou aktivitu a zavedlo je to az ke tve osobe :)

 
Nahoru Odpovědět
9.6.2020 15:20
Avatar

Člen
Avatar
Odpovídá na Filip
:9.6.2020 23:23

Tento typ úlohy sa vo všeobecnosti rieši tak, že sa nerieši. Nie s PHP. Toto je totiž priam učebnicový typ úlohy na ktorú sa nasádza Node miesto Apache + PHP.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
9.6.2020 23:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.