[vpsFree.cz: community-list] OT - PHP, MSQL a sdílení dat

Miroslav Misek miroslav.misek at netgarden.cz
Mon Jul 2 16:33:58 CEST 2018


Ahoj,

prave proto jsem navrhoval pouzit buffer (cache) rovnou a odesilat 
uctenky na server az pozdeji (cronem kazdou minutu?).
Pak neresis jestli funguje spojeni nebo ne, ale jestli se ti pocedlo 
odeslani te jedne uctenky nebo nebo.
A podle toho ji pak z cache vymazes nebo ne.

Co se produktove db tyka, bude pouzijes replikaci, coz v jednoduchem 
master-slave nastaveni by melo fungovat ok.
Nebo muzes do tabulky s produktama pridat sloupec "global_id", ktery 
budes incrementovat vzdy pri kazde zmene.
Pokladna si pak stahne jen zaznamy s novejsim "global_id" nez stahla 
posledne.
Zase v tomto pripade nebude vadit, kdyz pripojeni k serveru na nejakou 
dobu padne.
Nevyhoda takovehoto postupu je, ze nepoznas smazane produkty.

Dalsi co me napada je udelat tabulku "transactions" se sloupecky 
"global_id", "product_id", "operation".
Tam ulozis zaznam pri kazde zmene a pokladny se pak mohou syncovat 
oproti teto tabulce.
Zase si pokladna bude jen pamatovat posdleni stahnute "global_id".

Mirek


On 2.7.2018 16:14, Jan B. Kolář wrote:
> Díky všem za jejich reakci a omlouvám se za moje poněkud delší odezvy. Sedím
> zrovna za pultem a zatím co odpovídám, tak ještě obsluhuji zákazníky :-D
>
> V podstatě se mi zdá jako nejjednodušší řešení to, co míše Martin. Můj problém
> ale je, že úplně přesně nevím, jak bych to měl v PHP implementovat. Tedy
> první, co mě napadlo je, že bych použil dvě databáze - vzdálenou přes SSH
> tunel a lokální. Standardně bych pracoval se vzdálenou databází a pokud by se
> PHP nepodařilo ke vzdálené databázi připojit, tak by začalo pracovat s lokální
> databází a ukládalo si účtenky, které vystavilo pro pozdější synchronizaci.
> Jakmile by se spojení obnovilo, tak by se appka pokusila všechno z lokální
> databáze nahrát do vzdálené databáze na server.
>
> Hned první, co mě ale napadá je, jak appka pozná, že je spojení přerušeno/
> navázáno? Tedy pokud budu při každém požadavku čekat na timeout vzdálené
> databáze, tak se ta aplikace asi brutálně zpomalí, ikdyž tam dám třeba jen 1s
> timeout.
>
> Čím si však vůbec nejsem jistý, jakým způsobem bych měl řešit tu cache
> produktů? To mám třeba co hodinu stahovat celou produktovou tabulku ze
> vzdálené databáze a ukládat ji lokálně? Jde sice jen o cca. 2 tisíce produktů
> a dvě pokladny, ale přesto...
>
> Neviděl jste někdo nějakou implementaci takového problému, že bych se mohl
> podívat na kód?
>
> Dne pondělí 2. července 2018 13:18:36 CEST jste napsal(a):
>> Dne 2.7.2018 v 11:26 Jan B. Kolář napsal(a):
>>> Začal jsem si tedy pohrávat s myšlenkou, že bych aplikaci přesunul na
>>> každou pokladnu zvlášť (tzn. na pokladně by běžel nginx, PHP a mysql) a
>>> na server si dělal jen replikaci databází, abych pak mohl dělat z
>>> pokladen výkazy, aniž by byly v běhu.
>> Nebylo by jednodušší používat lokální databázi na pokladnách jen jako
>> cache produktů a buffer účtenek? Databáze na serveru bude hlavní.
>> Pokladny si z ní v definovaných intervalech budou aktualizovat cache
>> produktů a průběžně do ní budou zapisovat nové účtenky, které se
>> serverem Ministerstva vyřídí samy. Když ale selže spojení s hlavní
>> databází, účtenka se zapíše do bufferu a na server se uloží až
>> dodatečně, až se spojení zase obnoví.
>>
>> S pozdravem,
>> Maritn Doucha



More information about the Community-list mailing list