Autor Zpráva
Krenda
Profil
Zdravím všechny,

potřebuji poradit. Mám v kompu aplikaci (evidence velkoobchodního skladu), která mi nepřetržitě (1x za minutu) posílá soubor s exportem zboží ve formátu .csv na předem určený server. Na tomto serveru mám e-shop, kterým potřebuji tyto exportované data zpracovávat (ukládat do MySQL databáze). Problém je v tom, že data v databázi musí být pořád aktuální, tudíž budu muset stále kontrolovat daný soubor a v případě změny ho zpracovávat. Otázkou tedy je, jakým způsobem to udělat? Napadly mě tyto možnosti:

1. použít CRON, ale ten jsem bohužel musel hned vyloučit, jelikož potřebuji data zpracovávat permanentně a co jsem se dočetl, tak CRON mohu nastavit minimálně na 2 hod intervaly

2. při každém dotazu na DB (tím myslím když bude chtít návštěvník zobrazit stránku se zbožím) se porovná obsah databáze s obsahem dat v exportovaném souboru a v případě rozdílů se data v databázi aktualizují. Zde nastává ten problém, že bude v exportu třeba 1000 položek, a tak se bojím, aby se stránka dlouho nenačítala.

Další možnosti mě bohužel nenapadají. Dokáže někdo poradit jiné řešení? Předem díky.
ninja
Profil
1. Limit minimálně 2 hodin nemá žádné opodstatnění, jedná se jen o nastavení u vašeho hostingu.

Aplikace ukládá export v .csv na FTP, nebo odesílá na nějaké URL?

Nevím jak kritická je aktuálnost, ale pokud si můžete dovolit 1-5 minut posun, volil bych cron. Jinak vždy před výpisem kontrola, jestli aktuaální verze .csv dat je odlišná než poslední. Pokud odlišná, aktualizovat databázi a následně pokračovat ve výpisu stránky.
AM_
Profil
2. bude zcela nereálně pomalá, na to rovnou zapomeň.
1. CRON asi budeš muset použít, ale minimální interval pro CRON je právě jedna minuta :)
jakým způsobem se aktualizuje soubor .csv? pokud třeba tak, že v momentě, kdy někdo něco koupí, tak ty tam odečteš jedničku od počtu kusů na skladě, je toto hrubě neefektivní. Jinak mi není jasné, co by se mělo ve skladu každou minutu měnit. Pak by stálo za to:
- zadávat odebrané zboží rovnou do eshopu (a z něj to zpětně exportovat do skladu, nebo to třeba zadávat do obojího)
- vytvořit program, který v lokálním počítači bude sledovat změny v .csv souboru a na server bude do databáze odesílat pouze skutečné změny

Je totiž tak i tak hloupé každou minutu přepisovat celou databázi zboží, když se změní maximálně pár položek. To by mohlo dost pravděpodobně e-shop zcela neúměrně vytížit nebo úplně složit.
Krenda
Profil
Export se ukládá přímo na FTP, takže to asi budu zpracovávat cyklicky pomocí toho CRONu. Díky.
Krenda
Profil
AM:
Jde o to, že klient používá aplikaci vytvářející export skoro pořád a proto ten krátký interval. I když možná to nebude tak horké a bude to stačit aktualizovat cca 1x za 10 min.
Jinak samozřejmě nebudu přepisovat celou databázi zboží, jak jsi psal, ale budu pravděpodobně porovnávat nově vyexportovaný .csv s předešlým a v případě změn upravím jen část DB.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: