<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Ahoj,<div class=""><br class=""></div><div class="">to co hledas je Circuit Breaker (<a href="https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern" class="">https://en.wikipedia.org/wiki/Circuit_breaker_design_pattern</a> nebo <a href="https://martinfowler.com/bliki/CircuitBreaker.html" class="">https://martinfowler.com/bliki/CircuitBreaker.html</a>)</div><div class=""><br class=""></div><div class="">V PHP uz si neco muzes vygooglit, neco sem nasel :-).</div><div class=""><br class=""></div><div class="">Dalsi reseni (ktere pouzivame bezne v produkci) je nasazeni MQ front, ktere je samo od sebe dostatecne robustni a vyresi ti spoustu problemu (ale o to slozitejsi je to dokodovat).</div><div class=""><br class=""></div><div class=""><div class="">
<div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">--------------</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Ivan Moucha [Minowara]</div><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><br class=""></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline">
</div>
<div><br class=""><blockquote type="cite" class=""><div class="">On 2 Jul 2018, at 16:14, Jan B. Kolář <<a href="mailto:janbivoj.kolar@zazen-nudu.cz" class="">janbivoj.kolar@zazen-nudu.cz</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Díky všem za jejich reakci a omlouvám se za moje poněkud delší odezvy. Sedím <br class="">zrovna za pultem a zatím co odpovídám, tak ještě obsluhuji zákazníky :-D<br class=""><br class="">V podstatě se mi zdá jako nejjednodušší řešení to, co míše Martin. Můj problém <br class="">ale je, že úplně přesně nevím, jak bych to měl v PHP implementovat. Tedy <br class="">první, co mě napadlo je, že bych použil dvě databáze - vzdálenou přes SSH <br class="">tunel a lokální. Standardně bych pracoval se vzdálenou databází a pokud by se <br class="">PHP nepodařilo ke vzdálené databázi připojit, tak by začalo pracovat s lokální <br class="">databází a ukládalo si účtenky, které vystavilo pro pozdější synchronizaci. <br class="">Jakmile by se spojení obnovilo, tak by se appka pokusila všechno z lokální <br class="">databáze nahrát do vzdálené databáze na server.<br class=""><br class="">Hned první, co mě ale napadá je, jak appka pozná, že je spojení přerušeno/<br class="">navázáno? Tedy pokud budu při každém požadavku čekat na timeout vzdálené <br class="">databáze, tak se ta aplikace asi brutálně zpomalí, ikdyž tam dám třeba jen 1s <br class="">timeout.<br class=""><br class="">Čím si však vůbec nejsem jistý, jakým způsobem bych měl řešit tu cache <br class="">produktů? To mám třeba co hodinu stahovat celou produktovou tabulku ze <br class="">vzdálené databáze a ukládat ji lokálně? Jde sice jen o cca. 2 tisíce produktů <br class="">a dvě pokladny, ale přesto...<br class=""><br class="">Neviděl jste někdo nějakou implementaci takového problému, že bych se mohl <br class="">podívat na kód? <br class=""><br class="">Dne pondělí 2. července 2018 13:18:36 CEST jste napsal(a):<br class=""><blockquote type="cite" class="">Dne 2.7.2018 v 11:26 Jan B. Kolář napsal(a):<br class=""><blockquote type="cite" class="">Začal jsem si tedy pohrávat s myšlenkou, že bych aplikaci přesunul na<br class="">každou pokladnu zvlášť (tzn. na pokladně by běžel nginx, PHP a mysql) a<br class="">na server si dělal jen replikaci databází, abych pak mohl dělat z<br class="">pokladen výkazy, aniž by byly v běhu.<br class=""></blockquote><br class="">Nebylo by jednodušší používat lokální databázi na pokladnách jen jako<br class="">cache produktů a buffer účtenek? Databáze na serveru bude hlavní.<br class="">Pokladny si z ní v definovaných intervalech budou aktualizovat cache<br class="">produktů a průběžně do ní budou zapisovat nové účtenky, které se<br class="">serverem Ministerstva vyřídí samy. Když ale selže spojení s hlavní<br class="">databází, účtenka se zapíše do bufferu a na server se uloží až<br class="">dodatečně, až se spojení zase obnoví.<br class=""><br class="">S pozdravem,<br class="">Maritn Doucha<br class=""></blockquote><br class="">-- <br class="">Jan B. Kolář<br class=""><br class="">Zažeň nudu<br class="">Hodolanská 17, 779 00 Olomouc<br class="">tel: +420 605 800 859<br class=""><a href="mailto:janbivoj.kolar@zazen-nudu.cz" class="">e-mail: janbivoj.kolar@zazen-nudu.cz</a><br class="">www.zazen-nudu.cz<br class="">_______________________________________________<br class="">Community-list mailing list<br class="">Community-list@lists.vpsfree.cz<br class="">http://lists.vpsfree.cz/listinfo/community-list<br class=""></div></div></blockquote></div><br class=""></div></body></html>